假設我有一個蜂巢表(名爲表),就像這樣:部隊蜂巢表的每一行使用映射
row1 2341
row2 828242
row3 205252
...
表本身很長(千行)。我做這樣的事情來運行轉換使用Python腳本:
FROM (
MAP table.row, table.num
USING 'python script.py'
AS output
FROM table
) t1
INSERT OVERWRITE TABLE table2
SELECT (t1.output) as output_result;
的問題是,因爲我確實讀了一個表,而不是文件,每一行被傳遞到相同的映射。如你所想,這需要很長時間。有沒有辦法強制每一行都去一個單獨的映射器,以便腳本中的任何邏輯都可以處理所有其他事情?基本上,我想運行它所預期的mapreduce,但只是將表中的行傳遞給不同的映射器。
感謝您的幫助。
數據不應該只有一個映射器。如果是這樣,它不依賴於腳本,但數據如何存儲在表中。例如,如果數據以壓縮文本形式存儲在一個文件中,無論您做什麼,hadoop都無法將其分割爲多個映射器。 –
我需要表中的每一行都轉到單獨的映射器。現在,表格只是一個文本文件。本質上,不是將文件傳遞給映射器,而是傳遞表中的行(表中有多行)。任何方式我可以強制這個? – intl
我在說的是它應該已經到了多個映射器。文件有多大?壓縮(.gz)嗎? –