Hadoop 如果列的值是列表的一部分,则使用Pig脚本提取行
我有一个像这样的猪脚本Hadoop 如果列的值是列表的一部分,则使用Pig脚本提取行,hadoop,apache-pig,Hadoop,Apache Pig,我有一个像这样的猪脚本 a = load 'large_file' using PigStorage(',') b = filter a by $16 = '12345678' c = filter a by $16 = '456' d = union b,c store d into 'output.csv' 如果我想通过值列表筛选a。例如,当第16列的值位于大型值列表中时,我希望提取所有行 用熊猫的话来说就是 df[df['col'].isin([one massive list])]
a = load 'large_file' using PigStorage(',')
b = filter a by $16 = '12345678'
c = filter a by $16 = '456'
d = union b,c
store d into 'output.csv'
如果我想通过值列表筛选a。例如,当第16列的值位于大型值列表中时,我希望提取所有行
用熊猫的话来说就是
df[df['col'].isin([one massive list])]
我正在使用pig版本0.8对于pig-0.8,请在过滤器中使用多个
或
b = filter a by $16 == '12345678' OR $16 == '456' OR $16 == 'anotherval';
从Pig-0.12.0开始,您可以在操作符中使用
b = filter a by $16 IN ('12345678', '456', ... );
@franklinsijio是否存在我可以从文件或其他文件读取列表的情况?@aceminer如果列表在文件中,则更简单的方法是使用@franklinsjio。似乎复制联接仅适用于小文件?我假设包含列表的文件将比实际数据文件小,在这种情况下,复制联接的性能更好,否则你可以用join来完成。无论哪种方式,join都将是解决方案。