豬新手在這裏。我有一個關係A
與多個字段(f1
,f2
...)。我想快速查看每個字段中存在的所有不同值。如何在Pig中編寫函數?
現在,我這樣做:
f1 = FOREACH A GENERATE f1;
f1 = DISTINCT f1;
dump f1;
我不想每場做到這一點。這太精細了。是否可以在Pig中編寫某種功能來完成此操作。我在文檔中查看了UDF,但我不想切換到Java或Python之類的其他語言。我認爲豬對我正在做的事情很好。
豬新手在這裏。我有一個關係A
與多個字段(f1
,f2
...)。我想快速查看每個字段中存在的所有不同值。如何在Pig中編寫函數?
現在,我這樣做:
f1 = FOREACH A GENERATE f1;
f1 = DISTINCT f1;
dump f1;
我不想每場做到這一點。這太精細了。是否可以在Pig中編寫某種功能來完成此操作。我在文檔中查看了UDF,但我不想切換到Java或Python之類的其他語言。我認爲豬對我正在做的事情很好。
你所尋找的是一個宏。這相當於一個函數。
DEFINE MY_MACRO(relation,field) RETURNS selected_field_distinct {
selected_field = FOREACH $relation GENERATE $field;
$selected_field_distinct = DISTINCT selected_field;
};
A = LOAD 'input.txt' USING PigStorage(',') AS (f1:chararray, f2:chararray);
F1 = MY_MACRO(A,'f1');
F2 = MY_MACRO(A,'f2');
DUMP F1
DUMP F2
請注意:
一個想法值得考慮....
如果在F1看到的值不會發生F2,那麼你可以試試這個方法。在這種情況下,我們只執行一次DISTINCT。
f1 = FOREACH A GENERATE f1;
f2 = FOREACH A GENERATE f2;
...
f10 = FOREACH A GENERATE f10;
all_values = UNION f1,f2,..., f10;
uniq_values = DISTINCT all_values;
DUMP uniq_values;
我正在尋找更通用的解決方案,使用宏將是最好的。但是,謝謝,因爲你的回答,我已經知道在關係上使用「DISTINCT」。 – Phani
''我想快速看到每個字段中存在的所有不同的值。「'...'」我不想爲每個字段都這樣做。「'所以你*和* *不要*想看到每個領域的獨特之處?這是一項艱鉅的任務。 – gobrewers14
@ GoBrewers14對不起,我不是以英語爲母語的人。如果您明白我的意思,請隨時編輯相應的問題。 – Phani