python - 合并两个键不同但相关的 RDD

标签 python apache-spark join rdd

在 pyspark 中,考虑两个 rdd,例如:

rrd1 = [('我的名字',5),('名字是',4)]

rdd2 = [('我的',6),('名字',10),('是',5)]

其中rdd1是二元组和计数的元组,rdd2是相应的一元元组和计数的元组, 我想要一个包含 3 个元素的元组的 RDD,例如:

RDD = [ (('我的名字',5),('我的',6),('名字',10)) , (('名字是',4), ('名字' ,10),('是',5))]

我尝试了rdd2.union(rdd1).reduceByKey(lambda x,y : x+y)但在这种情况下这不是正确的方法,因为键不同但是 在某种意义上它们是相关的

最佳答案

你可以这样做;拆分bigram rdd以生成与rdd2连接的 key ,然后按bigram分组以将属于同一bigram的元素收集在一起:

(rdd1.flatMap(lambda x: [(w, x) for w in x[0].split()])    
     .join(rdd2.map(lambda x: (x[0], x)))
     .map(lambda x: x[1])
     .groupBy(lambda x: x[0])
     .map(lambda kv: (kv[0],) + tuple(v[1] for v in kv[1]))
     .collect())

# [(('name is', 4), ('name', 10), ('is', 5)), (('my name', 5), ('name', 10), ('my', 6))]

关于python - 合并两个键不同但相关的 RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943080/

相关文章:

python - 通过列表理解的频率数据框?

python - 让 Celery 使用 Django 异常中间件

apache-spark - spark master 因内存不足异常而宕机

php - 如何使用 select join two tables by using right to specify the last character of join values in codeigniter?

python - 检查函数参数类型是 Pythonic 吗?

python - Pyqt5 QTreeWidget CurrentItemChanged 信号发送整数作为前一项

hadoop - 如何使用Intel hadoop中的spark-shell从hdfs读取?

apache-spark - 通过 bucketBy 优化 Spark DataFrame/Dataset groupBy

MySQL 内连接与 "WHERE id IN ()"

php - 来自具有相同列名的两个表的数据