Apache Pig 错误 - 为什么它不接受 chararray 中的所有列
Apache Pig Error - Why it don't accept all the columns in chararray
我有以下 Pig 脚本:
I'm trying with this:
Source_Data = LOAD '/user/cloudera/Source_Data/' 使用 PigStorage('\t','-tagFile');
Data_Schema = FOREACH Source_Data 生成 (
(chararray)$1 作为日期,
(chararray)$2 作为 ID,
(chararray)$3 AS 间隔,
(chararray)$4 作为代码,
(字符数组)$5 AS S_In_Activity,
(字符数组)$6 AS S_Out_Activity,
(字符数组)$7 AS C_In_Activity,
(字符数组)$8 AS C_Out_Activity,
(字符数组)$9 AS Traffic_Activity);
使用 PigStorage('\t');
将 Data_Schema 存储到 '/user/cloudera/Source_Data/New_Data/'
这是我的一行源数据:
11300 1387926000000 76 1.8190562337403677 0.9613115354827483 330.0372865843317554633 0.1161754442265068633 11.04195619825027733
但是我在执行代码时遇到错误,但如果我删除最后一部分来定义模式,它就会成功。请注意,第一列是由 Pig 语句插入的。
你基本上回答了最后一句话中的问题。使用 STORE 运算符时不能声明架构。根据 official doc:
STORE alias INTO 'directory' [USING function];
在你的情况下,它很简单:
Data = LOAD '/user/cloudera/Source' using PigStorage('\t','-tagFile');
Data_prestage = FOREACH Data GENERATE (
(chararray) AS Filename,
(chararray) AS CCode,
(chararray) AS SCode,
(chararray) AS In_Act,
(chararray) AS Out_Act,
(chararray) AS In_Act1;
STORE Data_prestage INTO '/user/cloudera/Source/Data2/' USING PigStorage('\t');
此外,如果您不打算对数据进行任何操作,您可能会考虑使用 STREAM。
我有以下 Pig 脚本:
I'm trying with this:
Source_Data = LOAD '/user/cloudera/Source_Data/' 使用 PigStorage('\t','-tagFile'); Data_Schema = FOREACH Source_Data 生成 ( (chararray)$1 作为日期, (chararray)$2 作为 ID, (chararray)$3 AS 间隔, (chararray)$4 作为代码, (字符数组)$5 AS S_In_Activity, (字符数组)$6 AS S_Out_Activity, (字符数组)$7 AS C_In_Activity, (字符数组)$8 AS C_Out_Activity, (字符数组)$9 AS Traffic_Activity); 使用 PigStorage('\t');
将 Data_Schema 存储到 '/user/cloudera/Source_Data/New_Data/'这是我的一行源数据:
11300 1387926000000 76 1.8190562337403677 0.9613115354827483 330.0372865843317554633 0.1161754442265068633 11.04195619825027733
但是我在执行代码时遇到错误,但如果我删除最后一部分来定义模式,它就会成功。请注意,第一列是由 Pig 语句插入的。
你基本上回答了最后一句话中的问题。使用 STORE 运算符时不能声明架构。根据 official doc:
STORE alias INTO 'directory' [USING function];
在你的情况下,它很简单:
Data = LOAD '/user/cloudera/Source' using PigStorage('\t','-tagFile');
Data_prestage = FOREACH Data GENERATE (
(chararray) AS Filename,
(chararray) AS CCode,
(chararray) AS SCode,
(chararray) AS In_Act,
(chararray) AS Out_Act,
(chararray) AS In_Act1;
STORE Data_prestage INTO '/user/cloudera/Source/Data2/' USING PigStorage('\t');
此外,如果您不打算对数据进行任何操作,您可能会考虑使用 STREAM。