Java 分解包含JSON的Spark数据帧列

Java 分解包含JSON的Spark数据帧列,java,apache-spark,apache-spark-sql,spark-dataframe,Java,Apache Spark,Apache Spark Sql,Spark Dataframe,我在dataframe中有一列,其中包含一个JSON对象。对于数据帧中的每一行,我都要提取JSON,解析它并提取某些字段。提取后,我希望将字段作为新的列元素附加到行中 我查看了DataFrame以及foreach、flatMap和map上可用的explode方法,但没有发现哪种方法更适合这种类型的处理。map可能就是您所需要的。使用此方法,您可以解析json,选择所需的字段,然后返回包含这些附加列的新行 通常,map用于用户定义的函数,每个输入行的输出行数为1:1,例如1。Flatmap用于1:

我在dataframe中有一列,其中包含一个JSON对象。对于数据帧中的每一行,我都要提取JSON,解析它并提取某些字段。提取后,我希望将字段作为新的列元素附加到行中


我查看了DataFrame以及foreach、flatMap和map上可用的explode方法,但没有发现哪种方法更适合这种类型的处理。

map可能就是您所需要的。使用此方法,您可以解析json,选择所需的字段,然后返回包含这些附加列的新行


通常,map用于用户定义的函数,每个输入行的输出行数为1:1,例如1。Flatmap用于1:n的用户定义函数,其中每行可以返回任意数量的行

David,感谢您的提示。即使map是1:1,它是否希望行长度保持一致?输出行的长度不需要与输入行的长度相同。但是对于数据帧,所有行必须具有相同的字段,因此所有输出行必须具有相同的结构/相同的长度不先将其映射为RDD吗?只需使用withColumn和UDF,就可以跳过转换。这听起来像Java—我真的不懂Java。我用的是Scala,我是pyspark的用户,但听起来不对。您应该只需要创建传递给map的函数。这是一个接受1行并输出1行的函数。同样,不是java spark用户。但是,请检查此问题中的代码是否有助于为您澄清问题