猪读数据作为databytearray

时间:2015-02-23 11:15:22

标签: hadoop apache-pig

嘿伙计们,我还有一个问题,我只是无法理解猪的行为

我正在将数据加载到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我得到上述错误。

1 个答案:

答案 0 :(得分:1)

我认为你必须选择:

1)您必须告诉Pig数据所具有的架构。例如:

temp = load '/user/sga/transformeddata' using PigStorage() AS (page_type:chararray);

2)当您第一次存储数据时,告诉Pigstorage也存储架构信息。 PigStorage('\t', '-schema');如上所述加载数据时,PigStorage应从架构信息中读取架构。