将地图列表保存到 csv pyspark
Posted
技术标签:
【中文标题】将地图列表保存到 csv pyspark【英文标题】:saving list of map to csv pyspark 【发布时间】:2018-01-29 10:42:08 【问题描述】:我有一个类似于以下的数据框
new_df = spark.createDataFrame([
(['product_code': '12', 'color': 'red', 'product_code': '212', 'color': 'white'], 7),
(['product_code': '1112', 'color': 'black'], 8),
(['product_code': '212', 'color': 'blue'], 3)
], ["items", "frequency"])
我需要创建一个类似于以下的数据框,以便我可以轻松地保存到 csv 中:(相同列表数据的规则编号相同)
+-------------------------------------------
# |rule | product_code |color |
# +-------------------------------------------
# |1 | 12 | red |
# |1 | 212 | white|
# |2 | 1122 | black|
# |3 | 212 | blue |
# +--------------------------------------------
【问题讨论】:
【参考方案1】:您可以添加monotonically_increasing_id
作为标识符和explode
:
from pyspark.sql.functions import explode, monotonically_increasing_id, col
(new_df
.withColumn("rule", monotonically_increasing_id())
.withColumn("items", explode("items"))
.select(
"rule",
col("items")["product_code"].alias("product_code"),
col("items")["color"].alias("color"))
.show())
# +-----------+------------+-----+
# | rule|product_code|color|
# +-----------+------------+-----+
# | 8589934592| 12| red|
# | 8589934592| 212|white|
# |17179869184| 1112|black|
# |25769803776| 212| blue|
# +-----------+------------+-----+
可以使用zipWithIndex
获得连续的 id,但它需要与 Python RDD 进行昂贵的转换。
【讨论】:
以上是关于将地图列表保存到 csv pyspark的主要内容,如果未能解决你的问题,请参考以下文章
使用 Dart 和 Flutter,我如何将动态小部件中的数据保存到另一个列表中的地图列表中
列表视图中的 csv 和复选框将选中的复选框代码保存在 ArrayAdapter 中