如何将我当前的RDDMap到新格式化的RDD

yshpjwxd  于 2022-10-07  发布在  Spark
关注(0)|答案(1)|浏览(133)

所以现在我现在的RDD是这样的:

  1. [(('DAI93865', 'FRO40251'), 1.0),
  2. (('GRO85051', 'FRO40251'), 0.999176276771005),
  3. (('GRO38636', 'FRO40251'), 0.9906542056074766),
  4. (('ELE12951', 'FRO40251'), 0.9905660377358491),

我想要将其Map或平面化,最终结果如下:

  1. [(('DAI93865FRO40251'), 1.0),
  2. (('GRO85051FRO40251'), 0.999176276771005),
  3. (('GRO38636FRO40251'), 0.9906542056074766),
  4. (('ELE12951FRO40251'), 0.9905660377358491),

所以基本上就是把这两个词合并为一个。我怎么才能在柴火里做到这一点呢?

这个怎么样:

  1. ((('DAI23334', 'ELE92920'), 'DAI62779'), 1.0),
  2. ((('DAI31081', 'GRO85051'), 'FRO40251'), 1.0),

在本例中,[0][0]为:

  1. (('DAI23334', 'ELE92920'), 'DAI62779')

我还想把它们组合成一根弦

gywdnpxw

gywdnpxw1#

  1. rdd = spark.sparkContext.parallelize(
  2. [
  3. (['a', 'b'], 'c'),
  4. (['d', 'e'], 'f')
  5. ]
  6. )
  7. rdd.collect()
  8. [(['a', 'b'], 'c'), (['d', 'e'], 'f')]

您需要将map与您自己的逻辑一起使用:

  1. rdd.map(lambda row: ((row[0][0]+row[0][1], ), row[1])).collect()
  2. [(('ab',), 'c'), (('de',), 'f')]

相关问题