apache pig error-为什么它不接受chararray中的所有列

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

我有以下的Pig脚本:

I'm trying with this:

source_data=使用pigstorage('\t','-tagfile')加载'/user/cloudera/source_data/';data\u schema=foreach source\u data generate((chararray)$1作为date,(chararray)$2作为id,(chararray)$3作为interval,(chararray)$4作为code,(chararray)$5作为s\u in\u activity,(chararray)$6作为s\u out\u activity,(chararray)$7作为c\u in\u activity,(chararray)$8作为c\u out\u activity,(chararray)$9作为traffic\u activity);使用pigstorage('\t')将数据_schema存储到'/user/cloudera/source_data/new_data/';
以下是我的一行源数据:
11300 1387926000000 76 1.8190562337403677 0.9613115354827483 330.0372865843317554633 0.1161754442265068633 11.04195619825027733
但是当我执行代码时会出错,但是如果我删除了定义模式的最后一部分,它会成功地给出我。注意,第一列是由pig语句插入的。

42fyovps

42fyovps1#

你基本上回答了最后一句话中的问题。使用存储运算符时不能声明架构。根据官方文件:

STORE alias INTO 'directory' [USING function];

在您的情况下,它将是简单的:

Data = LOAD '/user/cloudera/Source' using PigStorage('\t','-tagFile'); 

Data_prestage = FOREACH Data GENERATE (
(chararray)$1 AS Filename, 
(chararray)$2 AS CCode, 
(chararray)$3 AS SCode, 
(chararray)$4 AS In_Act,
(chararray)$5 AS Out_Act,
(chararray)$6 AS In_Act1;

STORE Data_prestage INTO '/user/cloudera/Source/Data2/' USING PigStorage('\t');

另外,如果您不打算对数据进行任何操作,您可能会考虑改用stream。

相关问题