pig未将数据加载到hcatalog表-hortonworks沙盒

prdp8dxp  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(404)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

四年前关门了。
改进这个问题
我正在hortonworks虚拟机中运行一个pig脚本,目的是提取xml数据集的某些部分,并将这些部分加载到hcatalog表的列中。在本地机器上,我在xml文件上运行pig脚本,得到一个包含所有提取部分的输出文件。但是,由于某种原因,当我在hortonworks vm中运行同一个脚本时,该脚本似乎运行成功,但hcatalog表仍然为空。
以下是我的本地脚本:

REGISTER piggybank.jar

items = LOAD 'data1.xml' USING org.apache.pig.piggybank.storage.XMLLoader('row') AS  (row:chararray);

data = FOREACH items GENERATE 
REGEX_EXTRACT(row, 'Id="([^"]*)"', 1) AS  id:int,
REGEX_EXTRACT(row, 'CreationDate="([^"]*)"', 1) AS  creationdate:chararray,
REGEX_EXTRACT(row, 'Score="([^"]*)"', 1) AS  score:int,
REGEX_EXTRACT(row, 'Title="([^"]*)"', 1) AS  title:chararray;

STORE data INTO '/tmp/postsETLResults' USING PigStorage();

我在hortonworks里用的是:

REGISTER piggybank.jar

items = LOAD 'data1.xml' USING org.apache.pig.piggybank.storage.XMLLoader('row') AS  (row:chararray);

data = FOREACH items GENERATE 
REGEX_EXTRACT(row, 'Id="([^"]*)"', 1) AS  id:int,
REGEX_EXTRACT(row, 'CreationDate="([^"]*)"', 1) AS  creationdate:chararray,
REGEX_EXTRACT(row, 'Score="([^"]*)"', 1) AS  score:int,
REGEX_EXTRACT(row, 'Title="([^"]*)"', 1) AS  title:chararray;

STORE data into 'posts_table_1' USING org.apache.hcatalog.pig.HCatStorer();

validate = LOAD 'default.posts_table_1' USING org.apache.hcatalog.pig.HCatLoader();

示例xml行(来自stackoverflow公共数据集):

<row Id="149115" PostTypeId="2" ParentId="149078" CreationDate="2008-09-29T15:16:23.870" Score="1" Body="&lt;p&gt;I'm sure you can also have Oracle display a query plan so you can see exactly which index is used first.&lt;/p&gt;&#xA;" OwnerDisplayName="user16324" LastActivityDate="2008-09-29T15:16:23.870" CommentCount="1" />

我手动创建了hcatalog表,所有正确的字段都存在并且类型正确。
奇怪的是如果我这么做了 dump data 在Pig,我没有得到任何产出。如果我 illustrate data 我在日志中看到我的数据片段,接着是大的空白区域,接着是更多的数据,等等。
我错过了什么?我真的很想用这个凌乱的xml文件在hcatalog中得到一个整洁的表。同样,当在我的机器上运行本地脚本时,我得到了我想要的结果,但是当我运行第二个版本时,它是为将输出存储到 posts_table_1 hcatalog表,我得到一个成功消息,但是一个空表。
或者,如果我可以在本地计算机上以逗号分隔的文件形式获取输出,我可以使用该文件,并让hcatalog自动在接口中加载数据。到目前为止,输出是以空格分隔的,这在色调上是有问题的,因为帖子的标题包含空格。
提前谢谢!这把我难住了。

55ooxyrt

55ooxyrt1#

我发现了问题。我手动创建了hcatalog表,并使用了所有默认选项,包括设置为 ^A (/100) . 我的输出有用制表符分隔的列( \t ),因此当表接收到数据时,它没有发现 ^A 分隔符并存储空数据集。我重新设计了table \t 一切都很顺利。

相关问题