加入两个产生空数据的 RDD

Posted

技术标签:

【中文标题】加入两个产生空数据的 RDD【英文标题】:Join two RDDs producing empty data 【发布时间】:2018-10-21 14:50:40 【问题描述】:

我有两个 RDD 表,part 和 parts。

它们有一个共同的列,“joinKey”。我尝试使用以下代码加入这两个表:

part = sc.textFile("/data/tpch/data-001/part/")
parts = sc.textFile("/data/tpch/data-001/parts/")
joinedRDD = part.join(parts)

但是,当我尝试显示joinedRDD 加入RDD.take(3)

我回来了:

[(u'1', (u'|', u'|')), (u'1', (u'|', u'|')), (u'1', (u'|', u'|'))]

什么给了?

【问题讨论】:

您能否部分发布一些数据,而部分数据可能是 spark 解析文件的问题。它们是管道分隔文件吗? 【参考方案1】:

sc.textFile() 返回一个 RDD[String]。您需要使用拆分将字符串解析为数组。然后你需要把它转换成一个键值rdd,然后将两者连接起来。

rdd = sc.textFile("path")
rddSplit = rdd.map(lambda l: l.split(delimiter))
rddKey = rddSplit.map(lambda l: l[keyIndex], l)
rddJoin = rddKey.join(rddKey)

【讨论】:

以上是关于加入两个产生空数据的 RDD的主要内容,如果未能解决你的问题,请参考以下文章

每行加入两个不同的RDD - Scala

加入两个流水线RDD

Spark in Python Working with Tuples - 如何在加入两个 RDD 后合并两个元组

如何通过一个键加入两个 RDD? [复制]

连接来自两个不同数据库的 RDD

如何加入两个镶木地板数据集?