我有点喜欢Spark环境和开发。
我有两个RDD,它们通过连接器合并,该连接器的结果如下:
(u'10611', ((u'Laura', u'Mcgee'), (u'66821', u'COMPLETE')))
(u'4026', ((u'Mary', u'Smith'), (u'3237', u'COMPLETE')))
(u'4026', ((u'Mary', u'Smith'), (u'4847', u'CLOSED')))
如果您看到我有两个元组和一个键,那么我想合并两个元组并将其保留为键和一个元组,如下所示:
(u'10611', (u'Laura', u'Mcgee', u'66821', u'COMPLETE'))
(u'4026', (u'Mary', u'Smith', u'3237', u'COMPLETE'))
(u'4026', (u'Mary', u'Smith', u'4847', u'CLOSED'))
另外,我该如何在saveAsTextFile之前格式化此格式,并用Tab分隔。例子
10611 Laura Mcgee 66821 COMPLETE
4026 Mary Smith 3237 COMPLETE
4026 Mary Smith 4847 CLOSED
我有这样的事情,但不确定如何通过元组访问它:
.map(lambda x: "%s\t%s\t%s\t%s" %(x[0], x[1], x[2], x[3]))
假设您的数据格式一致,则可以使用简单的加法运算符合并元组。
>>> weird = (u'10611', ((u'Laura', u'Mcgee'), (u'66821', u'COMPLETE')))
>>> weirdMerged = (weird[0], (weird[1][0]+weird[1][1]))
>>> weirdMerged
(u'10611', (u'Laura', u'Mcgee', u'66821', u'COMPLETE'))
输出到文本应该很简单,但是您的奇数球结构也使它有些奇怪。您的lambda不错,但您也可以这样做:
>>> print('\t'.join((weirdMerged[0],)+weirdMerged[1]))
10611 Laura Mcgee 66821 COMPLETE
我不确定这会好得多,但是可以。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句