-2

我从以前的 RDD 中获取了一些“列”,而不是想要拆分第二个元素。Spark 将其包裹在括号中。如何将它们放在一行中(取消它们,所以删除括号)?我花了大约 10 个小时来找到解决方案......需要在不使用数据框的情况下完成。谢谢

separatedRDD =  extractedRDD.map(lambda y: (y[0],y[1].split(' ' , 1),y[2],y[3]))

separatedRDD.take(2) # get output

[(u'2014-03-15:10:10:20',
  [u'Sorrento', u'F41L'],  ############### those are brackets I am talking about...
  u'8cc3b47e-bd01-4482-b500-28f2342679af',
  u'33.6894754264'),
 (u'2014-03-15:10:10:20',
  [u'MeeToo', u'1.0'],
  u'ef8c7564-0a1a-4650-a655-c8bbd5f8f943',
  u'37.4321088904')] 
4

1 回答 1

0

这是一个列表,所以你只需要通过一个一个拉它的元素来展平它(假设大小总是小到 2):

separatedRDD.map(lambda y: (y[0], y[1][0], y[1][1], y[2])).collect()

结果:

[('2014-03-15:10:10:20',
  'Sorrento',
  'F41L',
  '8cc3b47e-bd01-4482-b500-28f2342679af'),
 ('2014-03-15:10:10:20',
  'MeeToo',
  '1.0',
  'ef8c7564-0a1a-4650-a655-c8bbd5f8f943')]
于 2020-03-05T00:04:17.917 回答