嘿,伙计们,我还有一个问题,我只是不能理解猪的行为
我将数据加载到pig中,经过一些转换后,在hdfs(/user/sga/transformeddata)上使用PigStorage()存储数据。
但是当我从/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是pig中的别名。
现在,另一个脚本将使用此数据
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,我得到了上面的错误。
发布于 2015-02-23 20:59:17
我认为你必须选择:
1)你必须告诉Pig数据的模式。例如:
temp = load '/user/sga/transformeddata' using PigStorage() AS (page_type:chararray);2)当您第一次存储数据时,告诉Pigstorage也存储模式信息。PigStorage('\t', '-schema');当您像上面那样加载数据时,PigStorage应该从模式信息中读取模式。
https://stackoverflow.com/questions/28672470
复制相似问题