我在Pyspark非常新,请考虑:)
基本上我有两个文本文件:
文件1:
1,9,5
2,7,4
3,8,3
文件2:
1,g,h
2,1,j
3,k,i
以及Python代码:
file1 = sc.textFile("/user/cloudera/training/file1.txt").map(lambda line: line.split(","))
file2 = sc.textFile("/user/cloudera/training/file2.txt").map(lambda line: line.split(","))
现在加入此联接:
join_file = file1.join(file2)
我希望得到这个:
(1,(9,5),(g,h))
(2,(7,4),(i,j))
(3,(8,3),(k,1))
但是,我得到了不同的结果:
(1, (9,g))
(3, (8,k))
(2, (7,1))
我是否缺少Join上的任何参数?
谢谢!
答案 0 :(得分:2)
这应该可以解决问题:
file1 = sc.textFile("/FileStore/tables/f1.txt").map(lambda line: line.split(",")).map(lambda x: (x[0], list(x[1:])))
file2 = sc.textFile("/FileStore/tables/f2.txt").map(lambda line: line.split(",")).map(lambda x: (x[0], list(x[1:])))
join_file = file1.join(file2)
join_file.collect()
以Unicode u'返回:
Out[3]:
[(u'2', ([u'7', u'4'], [u'1', u'j'])),
(u'1', ([u'9', u'5'], [u'g', u'h'])),
(u'3', ([u'8', u'3'], [u'k', u'i']))]