【发布时间】:2020-10-02 03:44:41
【问题描述】:
我在 Spark 中有一个具有以下架构的数据框: 架构:
StructType(List(StructField(id,StringType,true),
StructField(daily_id,StringType,true),
StructField(activity,StringType,true)))
列活动是一个字符串,示例内容:
{1.33,0.567,1.897,0,0.78}
我需要将列 Activity 转换为 ArrayType(DoubleType)
为了完成这项工作,我运行了以下命令:
df = df.withColumn("activity",split(col("activity"),",\s*").cast(ArrayType(DoubleType())))
dataframe 的新 schema 相应改变:
StructType(List(StructField(id,StringType,true),
StructField(daily_id,StringType,true),
StructField(activity,ArrayType(DoubleType,true),true)))
但是,数据现在看起来像这样: [NULL,0.567,1.897,0,NULL]
它将字符串数组的第一个和最后一个元素更改为 NULL。我不明白为什么 Spark 对数据框这样做。
请帮忙看看是什么问题?
非常感谢
【问题讨论】:
-
这能回答你的问题吗? Spark: Convert column of string to an array
标签: python arrays dataframe apache-spark casting