Hadoop 通过现有房地产在清管器中进行过滤

Hadoop 通过现有房地产在清管器中进行过滤,hadoop,apache-pig,hdfs,Hadoop,Apache Pig,Hdfs,我有一个黑名单文件,看起来有点像这样 481295b2-30c7-4191-8c14-4e513c7e7577 481295a2-1234-4191-8c14-4e513c7e7577 还有我正在加载的许多其他数据。 我如何过滤掉已经在黑名单中的数据? 在SQL术语中有点不合适。 我试着用一些类似的东西 但无法使用关系来实现此操作。您可以使用左连接和筛选器来实现它。例如: data = load '/path/to/data.txt' as (id: chararray);

我有一个黑名单文件,看起来有点像这样

481295b2-30c7-4191-8c14-4e513c7e7577
481295a2-1234-4191-8c14-4e513c7e7577
还有我正在加载的许多其他数据。 我如何过滤掉已经在黑名单中的数据? 在SQL术语中有点不合适。 我试着用一些类似的东西 但无法使用关系来实现此操作。

您可以使用左连接和筛选器来实现它。例如:

data = load '/path/to/data.txt' as (id: chararray);                
blacklist = load '/path/to/blacklist.txt' as (id: chararray);      
jnd = join data by id left outer, blacklist by id using 'replicated';
filtered = filter jnd by blacklist::id is null;                      
result = foreach filtered generate data::id as id;
dump result;     
在本例中,输入数据将通过黑名单左外连接。之后,我们通过is null检查删除了与黑名单匹配的行

使用“replicated”命令Pig将第二个关系加载到内存中,以加快连接速度。如果黑名单太大,无法放入内存,可以使用“复制”删除