2016-06-29 127 views
0

我需要一些指導/幫助來完成一項簡單任務,以在我的數據文件中爲Apache Pig創建模式。我有兩個文件將有助於此任務。第一個文件是包含沒有列標題的數據的數據文件,第二個文件包含數據文件的列標題。所以基本上,column_header文件是數據文件的模式。我如何在豬腳本中概述這一點?這是我到目前爲止。使用豬腳本創建模式

column_header = load 'sitecatalyst/coulmn_headers.tsv' using PigStorage('\t'); 
data = load 'sitecatalyst/hit_data.tsv' using PigStorage('\t') as column_header; 
schema = foreach data generate column_header; 
store schema into 'output1' using PigStorage('\t', '-schema'); 
withSchema = load 'output1'; 
describe withSchema; 

這是用於輸出

DUMP column_header 

(accept_language,瀏覽器,browser_height,browser_width)

當我做,

DUMP data; 

僅第一行數據的列正在輸出,這是錯誤的。

的en-US

的en-US

的en-US

的en-US

相反,它應該是,

的en-US 638 755 1600

en-US 638 655 1342

的en-US 638 723 1612

的en-US 638 231 1234

我怎麼能欺騙豬用 「COLUMN_HEADER」 作爲一個字符串,可以像在第二行語句中的PigStorage期間使用碼?

編輯: 此代碼將工作,但不是硬編碼我的column_header我想豬腳讀取它。

column_header = load 'sitecatalyst/coulmn_headers.tsv' using PigStorage('\t'); 
data = load 'sitecatalyst/hit_data.tsv' using PigStorage('\t') as (accept_language,browser,browser_height,browser_width); 
schema = foreach data generate accept_language,browser,browser_height,browser_width; 
store schema into 'output1' using PigStorage('\t', '-schema'); 
withSchema = load 'output1'; 
describe withSchema; 
+0

問題不清楚你需要什麼.. –

+0

嗨Sandeep,哪部分問題不清楚?我只需要爲我的數據文件創建一個模式。我有一個文件,其中包含數據文件的列標題。我如何實現這一目標? –

+0

你在看什麼你想要設置標題輸出文件或其他任何事情你在做... –

回答

0

你不能從豬腳本直接

data = load 'sitecatalyst/hit_data.tsv' using PigStorage('\t') as $column_header; 
schema = foreach data generate column_header; 
store schema into 'output1' using PigStorage('\t', '-schema'); 
withSchema = load 'output1'; 
describe withSchema; 

達到這樣的參數, 你可以同樣的事情,通過運行, 豬-param_file(位置豬腳本文件)柱

該文件的格式應該 COLUMN_HEADER的=完整的模式

https://blogs.msdn.microsoft.com/bigdatasupport/2014/08/12/how-to-use-parameter-substitution-with-pig-latin-and-powershell/

+0

你試過嗎?我認爲'$ column_header'會被一個不適合指定模式的文字字符串替換! – 54l3d

+1

是的,你做到了。它工作 – pratiklodha

+0

嗨@pratiklodha,感謝您抽出時間。我試過你提供的解決方案,但它不起作用。因爲文件column_header正在由製表符分隔。當我做'AS $ column_header'時,它應該有這種格式:(accept_language,browser,browser_height,browser_width),我可以從'DUMP column_header'中獲得。對不起,我的不好解釋 –