在Apache Pig(版本0.16.x)中,通過某個數據集字段的現有值列表篩選數據集的最有效方法是什麼?Pig:通過加載列表進行高效篩選
例如,
輸入(每@ inquisitive_mind的尖端已更新):一個線分隔文件每行一個值 my_codes.txt
'110'
'100'
'000'
sample_data.txt
'110', 2
'110', 3
'001', 3
'000', 1
所需輸出
'110', 2
'110', 3
'000', 1
示例腳本
%default my_codes_file 'my_codes.txt'
%default sample_data_file 'sample_data.txt'
my_codes = LOAD '$my_codes_file' as (code:chararray)
sample_data = LOAD '$sample_data_file' as (code: chararray, point: float)
desired_data = FILTER sample_data BY code IN (my_codes.code);
錯誤:
Scalar has more than one row in the output. 1st : ('110'), 2nd :('100')
(common cause: "JOIN" then "FOREACH ... GENERATE foo.bar" should be "foo::bar")
我還曾試圖FILTER sample_data BY code IN my_codes;
但 「IN」 的條款似乎需要括號。 我也試過FILTER sample_data BY code IN (my_codes);
但得到的錯誤: A柱需要從一個關係預計它被用作標
後續:如果現有的列表中小與正在查詢的數據集相比,Pig中的* replicated * join比標準JOIN更有效。 – Quetzalcoatl