python - 在 PySpark 中展平 RDD

标签 python apache-spark pyspark

我正在尝试使用 PySpark 处理数据。以下是我的示例代码:

rdd = sc.parallelize([[u'9', u'9', u'HF', u'63300001', u'IN HF', u'03/09/2004', u'9', u'HF'], [u'10', u'10', u'HF', u'63300001', u'IN HF', u'03/09/2004', u'9', u'HF']]) 

out = rdd.map(lambda l : (l[0:3],str(l[3]).zfill(8)[:4],l[4:]))

out.take(2)

[([u'9', u'9', u'HF'], '6330', [u'IN HF', u'03/09/2004', u'9', u'HF']), ([u'10', u'10', u'HF'], '6330', [u'IN HF', u'03/09/2004', u'9', u'HF'])]

expected output:
[[u'9', u'9', u'HF', '6330', u'IN HF', u'03/09/2004', u'9', u'HF'], [u'10', u'10', u'HF', '6330', u'IN HF', u'03/09/2004', u'9', u'HF']]

有什么方法可以在spark中压平RDD吗?

最佳答案

这里不需要任何 Spark 特有的东西。像这样的东西应该足够了:

out = rdd.map(lambda l : (l[0:3] + [str(l[3]).zfill(8)[:4]] + l[4:])

不过,lambda 内部的解构可能更具可读性。我的意思是这样的:

rdd = sc.parallelize([(1, 2, 3), (4, 5, 6)])
rdd.map(lambda (x, y, z): (x, str(y).zfill(8), z))

关于python - 在 PySpark 中展平 RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404672/

相关文章:

apache-spark - pyspark 如何有效地进行这种转换?

apache-spark - Pyspark 在 groupby 中创建字典

python - Flask Restful 接受 post 请求中的列表

python - 从 jenkins 运行 python 脚本 - 但在 jenkins 的输出中看不到 python 打印

scala - Spark中进行特征选择后,使测试数据的特征与训练数据相同

python - 将 Json 数据写入 Azure Synapse PySpark Notebook 中的文件

python - Spark 中可能彼此略有不同的日志行的正则表达式

java - 一种 "Products"的推荐引擎

python - 使用 ctypes 使用 Ctrl-C 中断 Python C 扩展

apache-spark - 无法使用 Kafka-Spark 集成找到 Set([topic,0]) 的领导者