【问题标题】:Converting Row into list RDD in pyspark在pyspark中将Row转换为列表RDD
【发布时间】:2018-04-12 01:04:30
【问题描述】:

我有一个表单列表

[Row(_1=u'5', _2=u'6')]

我想把它转换成

[(5,6)]

使用 PySpark

【问题讨论】:

  • 这是 RDD 还是列表?我怀疑它只是一个列表,所以这里不需要 Pyspark,而只是普通的 Python。类似[x[0] for x in <your_list>]

标签: python apache-spark pyspark


【解决方案1】:

如果您的 [Row(_1=u'5', _2=u'6')] 是您的 rdd 中的一行:

from pyspark.sql import Row

a = [Row(_1=u'5', _2=u'6')]
rdd = sc.parallelize(a) 
print rdd.take(1)
# >>> [Row(_1=u'5', _2=u'6')]

b = rdd.map(lambda line: tuple([int(x) for x in line]))
print b.take(3)
# >>> [(5, 6)]

【讨论】:

  • 但我看不到对列表顺序的保证。所以我假设内容是 Row 是类似字典的。您如何保证从 Row 中提取的内容的顺序?谢谢
  • 好的,从pyspark的代码我们知道Row是Python元组的一个子类。因此,这里保证了 Row 内的订单。 spark.apache.org/docs/2.3.0/api/python/_modules/pyspark/sql/…
【解决方案2】:

Row 是一个元组,所以你只需要:

rdd.map(tuple)

获取RDD[tuple]

rdd.map(list)

获取RDD[list]

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 2016-01-15
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多