我是新手,一直在努力以这种方式操纵数据。假设我有一个包含两列的数据框,每列包含JSON数据。我想将JSON中的每个键都放在一个数据框中的列中。
例如,如果我有以下数据框:
| key| value|
+--------------+--------------+
|{"foo": "bar"}|{"baz": "qux"}|
然后,结果数据帧将如下所示。
| foo| baz|
+------+------+
| bar| qux|
答案 0 :(得分:0)
我只是假设您的输入数据为拼花格式:
示例:
val Sampledata_df = spark.read.parquet("path/to/input.parquet")
val key_Json_Schema = StructType(Seq(
StructField("foo", StringType, true)
))
val value_Json_Schema = StructType(Seq(
StructField("baz", StringType, true)
))
val Parsed_df = Sampledata_df
.withColumn("parsed_key", from_json(col("key"), key_Json_Schema))
.withColumn("pased_value", from_json(col("value"), value_Json_Schema))
val Output_df = Parsed_df
.withColumn("output_key", $"parsed_key.foo")
.withColumn("output_value", $"pased_value.baz")
.select($"output_key",$"output_value")