hadoop - 当键分为几列时,如何在 Apache Pig 中加入两个商店?

标签 hadoop join apache-pig

我有两个存储的数据集:

A
ASDFGFG 5 7 8 9
B
ASDFG FG 5 7 8 9

我想按 A1 和 B1+2 加入这两个数据集。我知道数据集 A 中的 col 1 等于数据集 B 中的 cols 1+2。它们相同,但在 B 中拆分。我也知道 B1 的长度始终为 5 个字符,但我不能确定 B2将是 2 个字符。

最好不修改源文件,我该如何执行这样的连接?

最佳答案

您可以使用 CONCAT(b1,b2) 作为 b1_new 在关系 B 中生成一个新列,然后加入 A 和新关系说 B_New 使用 B_New 中的新列。假设您的文件是制表符分隔的

A = LOAD 'A.txt' USING PigStorage('\t') AS (a1:chararray,a2:int,a3:int,a4:int,a5:int);
B = LOAD 'B.txt' USING PigStorage('\t') AS (b1:chararray,b2:chararray,b3:int,b4:int,b5:int,b6:int);
B_New = FOREACH B GENERATE CONCAT(b1,b2) AS b1_new,b3,b4,b5,b6;
AB = JOIN A BY a1,B_New BY b1_new;
DUMP AB;

关于hadoop - 当键分为几列时,如何在 Apache Pig 中加入两个商店?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131269/

相关文章:

sql - 在 Impala 中将 YYYYMMDD 字符串转换为日期

hadoop - 请解释一下Hadoop集群环境的高层架构?

java - 如何在 JPA 中加入 JOIN?

mysql - 如果第二个表中的条件为真,则从第一个表中选择 1 条记录(所有引用行均处于事件状态 = 0)

java - Pig latin 程序,switch/else 错误

hadoop - 通过 java 和 grunt 执行 PIG 脚本

hadoop - 使用PIG从一堆压缩文件中采样1000行

java - 在 hbase shell 上执行 ValueFilter 和 Count 值

scala - Amazon EMR上的Spark on Yarn资源管理:如何利用所有可用核心执行Spark作业

mysql - 创建三个表的 View ,它们的 ip 连接在单独的表上