嘿伙计们,我还有一个问题,我只是无法理解猪的行为
我正在将数据加载到pig中,并在一些转换后使用PigStorage()在hdfs(/ user / sga / transformeddata)上存储它。
但是当我从/ user / sga / transformeddata位置加载数据并执行
时temp = load '/user/sga/transformeddata' using PigStorage();
gen = foreach temp generate page_type;
dump gen;
收到以下错误:
databytearray无法强制转换为java.lang.String
但如果我这样做
gen = foreach temp generate *;
dump gen;
一切正常
任何帮助都是完全理解的。
根据要求提供代码:
STORE union_of_all_records INTO '/staged/google/data_after_denormalization' using PigStorage('\t','-schema');
union_of_all_records
是猪的别名。
现在是另一个将使用此数据的脚本
lookup_data =
LOAD '/staged/google/page_type_map_file/' using PigStorage() AS (page_type:chararray,page_type_classification:chararray);
load_denorm_clickstream_record =
LOAD '/staged/google/data_after_denormalization' using PigStorage('\t','-schema');
并加入这两个别名
denorm_clickstream_record = LIMIT load_denorm_clickstream_record 100;
join_with_lookup =
JOIN denorm_clickstream_record BY page_type LEFT OUTER, lookup_data BY page_type;
step x : final_output =
FOREACH join_with_lookup
GENERATE denorm_clickstream_record::page_type as page_type;
在步骤x我得到上述错误。
答案 0 :(得分:1)
我认为你必须选择:
1)您必须告诉Pig数据所具有的架构。例如:
temp = load '/user/sga/transformeddata' using PigStorage() AS (page_type:chararray);
2)当您第一次存储数据时,告诉Pigstorage也存储架构信息。 PigStorage('\t', '-schema');
如上所述加载数据时,PigStorage
应从架构信息中读取架构。