2015-02-23 46 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