Pyspark 连接两个管道DRDD
我正在尝试使用PySpatt jupyter笔记本中的.join()连接两个PipelineDRDD 第一个RDD:Pyspark 连接两个管道DRDD,pyspark,jupyter-notebook,bigdata,rdd,Pyspark,Jupyter Notebook,Bigdata,Rdd,我正在尝试使用PySpatt jupyter笔记本中的.join()连接两个PipelineDRDD 第一个RDD: primaryType.take(5) ['DECEPTIVE PRACTICE', 'CRIM SEXUAL ASSAULT', 'BURGLARY', 'THEFT', 'CRIM SEXUAL ASSAULT'] 第二个RDD: districts.take(5) ['004', '022', '008', '003', '001'] 加入RDD: rdd_j
primaryType.take(5)
['DECEPTIVE PRACTICE',
'CRIM SEXUAL ASSAULT',
'BURGLARY',
'THEFT',
'CRIM SEXUAL ASSAULT']
第二个RDD:
districts.take(5)
['004', '022', '008', '003', '001']
加入RDD:
rdd_joined = primaryType.join(districts)
rdd_joined.take(5)
输出:
[]
我做错了什么?应该有一些唯一的键来连接这两个rdd,所以使用rdd.zipWithIndex()为这两个rdd创建索引,然后尝试连接它们
districts.take(5)
['004', '022', '008', '003', '001']
primaryType.take(5)
['DECEPTIVE PRACTICE',
'CRIM SEXUAL ASSAULT',
'BURGLARY',
'THEFT',
'CRIM SEXUAL ASSAULT']
districts=districts.zipWithIndex()
districts.take(5)
[('004', 0), ('022', 1), ('008', 2), ('003', 3), ('001', 4)]
districts=districts.map(lambda (x,y):(y,x))
primaryType=primaryType.zipWithIndex()
primaryType=primaryType.map(lambda (x,y):(y,x))
primaryType.join(districts).map(lambda (x,y):y).take(5)
[('DECEPTIVE PRACTICE', '004'), ('CRIM SEXUAL ASSAULT', '001'), ('CRIM SEXUAL ASSAULT', '022'), ('BURGLARY', '008'), ('THEFT', '003')]
你不需要pairrds来执行连接吗?好吧,我想我遗漏了一些东西。。那么,预期的产出是多少呢?似乎你在用土豆加入犯罪:)顺便说一句:我想我需要为RDD中的每个元素附加唯一的键,然后加入它们?