2013-07-12 35 views
0

我是PIG新手。如何在Apache PIG的相同文件中添加數據?

其實我有一個用例,我必須在每個常規時間間隔之後將數據一次又一次地存儲在同一個文件中。但是當我瀏覽一些教程和鏈接時,我沒有看到與此相關的任何內容。

我應該如何將數據存儲在同一個文件中?

+1

你是什麼意思一次又一次地存儲數據?你能否提供詳細信息,在這種情況下,你需要一次又一次地存儲數據 – zjffdu

+0

@zjffdu:我的意思是在處理完一些邏輯後,無論我得到什麼數據,我都想插入相同的文件。基線就像在SQL中一樣,我們使用INSERT查詢,在我的情況下,我想在這裏實現同樣的行爲。 –

回答

1

這是不可能的。 Pig使用Hadoop,現在沒有「推薦」解決方案來添加文件。

另一個問題是,只有在使用了一個映射器或者使用了一個reducer並且整個數據流結束時,豬纔會生成一個文件。

您可以:

  1. 給你試圖解決

  2. 不好解決該問題的更多信息:

2.1。處理豬腳本中的數據

2.2。從存在文件加載數據

2.3。工會關係hwre首先關係保持新數據,第二個關係保留現有文件的數據

2.4。將聯盟結果存儲到新輸出

2.5。用新的替換舊文件。

很好的解決:

新建文件夾/ MYDATA

創建文件夾內的分區,也可以是/ YYYY/MM/DD/HH如果你做的過程數據每小時

使用水珠閱讀數據:從小時分區

/mydata/*/*/*/*/* 

所有文件會被PIG/HIVE/MR或任何Hadoop的工具讀取。

+0

是的,我以同樣的方式做到了這一點,但我以更有效的方式期待它。無論如何,謝謝你的回覆。 :) –

0

確定日期的文件夾,如:/ABC/Hadoop的/ 20130726/ 內您可以根據喜歡時間戳生成輸出:/abc/hadoop/20130726/201307265465.gz

然後使用getmerge命令將所有數據合併到一個單一的文件

Usage: hadoop fs -getmerge <src> <localdst> [addnl] 

希望它會幫助你。

相關問題