2015-02-23 45 views
0

嗨我还有一个问题,我只是无法理解猪的行为猪读取数据databytearray

我将数据装入猪,经过一番改造HDFS上使用PigStorage()一起保存( /用户/ SGA/transformeddata)。

但是,当我从/用户/ 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

我认为你必须选择:

1)你必须告诉猪八戒数据具有架构。例如:

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

2)当您首次存储数据时,请告知Pigstorage以存储架构信息。 PigStorage('\t', '-schema');如上所述加载数据时,PigStorage应从模式信息中读取模式。

+0

我已经做了同样的事情,同时存储我提供的架构的数据。 – saching 2015-02-23 13:47:11

+0

请发布代码 – Frederic 2015-02-23 13:52:33

+0

PigStorage对存储的数据一无所知,直到您告诉它 – WattsInABox 2015-02-23 15:58:49