【发布时间】:2021-06-08 11:01:55
【问题描述】:
我有以下数据框
+-------+--------------------------------
|__key__|______value____________________|
| 1 | {"name":"John", "age": 34} |
| 2 | {"name":"Rose", "age": 50} |
我想检索此数据框中的所有年龄值,然后将其存储在一个数组中。
val x = df_clean.withColumn("value", col("value.age"))
x.show(false)
但这会抛出异常。
线程“主”org.apache.spark.sql.AnalysisException 中的异常: Can't extract value from value#89: need struct type but got string;
如何解决我的要求
编辑
val schema = existingSparkSession.read.json(df_clean.select("value").as[String]).schema
val my_json = df_clean.select(from_json(col("value"), schema).alias("jsonValue"))
my_json.printSchema()
val df_final = my_json.withColumn("age", col("jsonValue.age"))
df_final.show(false)
目前没有抛出异常。但是我也看不到任何输出
编辑 2
println("---+++++--------")
df_clean.select("value").take(1)
println("---+++++--------")
输出
---+++++--------
---+++++--------
【问题讨论】:
标签: json scala dataframe apache-spark apache-spark-sql