2016-06-07 59 views
0

假設我有下面的一組記錄(保存爲實木複合地板):使用豬的MultiStorage嵌套結構

01, John, 250 
01, John, 260 
01, Daniel, 300 
01, Daniel, 400 
02, John, 250 
02, John, 260 
02, Daniel, 300 
02, Daniel, 400 

如何使用豬來創建此嵌套的文件夾結構

-- 01 
-- * Daniel 
-- * John 
-- 02 
-- * Daniel 
-- * John 

我知道我可以使用

MultiStorage('output/pig_results', '0', 'none', ','); 

用於動態分割第一列的數據,但是如何拆分數據動態由兩列? 此外,當我使用MultiStorage時,輸出爲csv,並且我想要保存我的實木複合地板存儲

+0

如果要將數據按兩列拆分,然後合併column1和column 2,然後應用MultiStorage函數。 – Pratik

+0

我有這個建議的兩個問題 1.最終結果將是一個平面文件夾結構(01 - 丹尼爾,01 - 約翰等) 2.我不能使用該方法輸出數據Parquet – Dan

+0

你可以寫一個簡單的python UDF做同樣的工作 – pratiklodha

回答

0

您可以創建一個由兩個第一列分區的Hive表,並使用您的豬腳本插入數據,你會得到的目錄是這樣的:

-- a=01/ 
----- b=Daniel/ 
----- b=John/ 
-- a=02/ 
----- b=Daniel/ 
----- b=John/ 

注意,上述所有的目錄和文件可駐留到b=Danielb=John

+0

您的意思是使用Hcatalog?不幸的是,這不是一個選項,因爲我們正在與託管谷歌(Dataproc)Hadoop集羣 – Dan

+0

@丹Hcatalog是一個抽象的蜂巢來簡化處理與豬蜂巢。 – 54l3d

+0

這是我在嘗試激活HCatalog時收到的錯誤 pig -useHCatalog ls:無法訪問/usr/lib/hive/lib/slf4j-api-*.jar:沒有該文件或目錄 ls:無法訪問/usr/lib/hive-hcatalog/share/hcatalog/*hcatalog-core-*.jar:沒有此文件或目錄 ls:無法訪問/ usr/lib/hive-hcatalog/share/hcatalog/hcatalog - *。jar:沒有這樣的文件或目錄 ls:無法訪問/usr/lib/hive-hcatalog/lib/*hbase-storage-handler-*.jar:沒有這樣的文件或目錄 ls:無法訪問/ usr/lib/hive-hcatalog/share/hcatalog/* hcatalog-pig-adapter - *。jar:沒有這樣的文件或直接 – Dan