我有两个数据集(1M唯一字符串)和(1B唯一字符串);我想知道这两个集合中有多少个字符串是常见的,并且想知道使用Apache Pig获取数字的最有效方法是什么?使用Apache Hadoop内部连接两个数据集Pig
回答
您可以先加入这两个文件,如下图所示:
A = LOAD '/joindata1.txt' AS (a1:int,a2:int,a3:int);
B = LOAD '/joindata2.txt' AS (b1:int,b2:int);
X = JOIN A BY a1, B BY b1;
然后你可以指望的行数:
grouped_records = GROUP X ALL;
count_records = FOREACH grouped_records GENERATE COUNT(A.a1);
它是否帮助你的问题......
您的情况不属于复制或合并或倾斜连接。所以你必须做一个默认连接,其中在映射阶段它注释每个记录的源,Join键将被用作shuffle键,以便相同的连接键进入相同的reducer,然后最左边的输入被缓存在reducer侧的内存中并通过其他输入进行连接。您还可以通过常规联接优化来提高联接,例如在联接之前过滤NULL,并且每个键的元组数最多的表可以保留为查询中的最后一个表。
为什么在我的情况下,它不属于复制或合并或偏斜连接? –
如果您必须进行复制连接,那么您的数据集中的一个必须在KB方面很小,以便它可以发送给所有任务跟踪器,并且这些数据集将被缓存在内存中,并且您的其他数据集将被传递以执行加入。但是这里没有一个数据集看起来很小。如果你有一个特定的键的多个值,那么单个reducer不能容纳更多的数据,就会使用斜连接。但是这里你的数据集包含唯一的字符串值。如果数据集已排序,则可以使用合并连接。 –
什么意思是合并连接?你能分享一些关于Skewed如何加入内部工作的基础知识的文档吗? –
如果您的数据已经在您可以定义的两个数据集中排序merged join
。
Mergede = join A by a1, B by b1 USING "merge";
Skewed Join: If the data is skewed and user need finer control over the allocation to reducers.
skewedh = join A by a1, B by b1 USING "skewed";
想知道如何扭曲工作底层到偏斜的数据情况?谢谢。 –
- 1. 将Apache Pig连接到Hadoop集群
- 2. Pig和Hadoop连接错误
- 3. 使用Hadoop和两个数据集
- 4. 如何在Apache PIG中正确执行内部连接?
- 5. 合并Pig中的两个数据集
- 6. 比较Pig中的两个数据集
- 7. Apache Pig和Hadoop的实现
- 8. 两个内部连接MYSQL
- 9. 内部连接两个表
- 10. 如何根据hadoop中的共同密钥连接两个数据集?
- 11. 从两个表中选择列(内部连接) - 内部连接
- 12. 使用多内部连接在MySQL中整理数据集
- 13. 用内部连接更新两个表
- 14. 连接两个内存数据库
- 15. Apache PIG:将一个数据集追加到另一个
- 16. Apache Pig中的连接错误
- 17. apache pig没有连接到hdfs
- 18. 如何收集从使用两个表中的数据连接
- 19. 内部连接数据库
- 20. SQL多个内部连接两个表
- 21. 春数据 - Hadoop的连接
- 22. 构建Apache Pig for Hadoop 2.4版本
- 23. 连接两个节点集使用XPath
- 24. 使用Hadoop通过两个数据集进行映射
- 25. 使用Hadoop Pig生成多个输出
- 26. 两个IObservables的内部连接
- 27. Mysql的内部连接两个表
- 28. R与Jupyter笔记本:使用dplyr内部连接两个数据帧日期
- 29. 使用apache pivot连接数据库?
- 30. 内部连接两张表
非常有帮助。 :) –
@ LinMa如果这回答了你的问题,请接受它。 – Balduz
完成,哥们,谢谢。祝你有美好的一天。 :) –