如何在Spark 2.2.0中将字符串数组展平为数据框的多行?
输入行
我尝试了下面这样使用
我遇到了如下错误。
输入行
["foo", "bar"]
val inputDS = Seq("""["foo", "bar"]""").toDF
inputDS.printSchema()
root
|-- value: string (nullable = true)
输入数据集 inputDS
inputDS.show(false)
value
-----
["foo", "bar"]
期望的输出数据集是 outputDS
value
-------
"foo" |
"bar" |
我尝试了下面这样使用
explode
函数,但它并没有完全起作用。inputDS.select(explode(from_json(col("value"), ArrayType(StringType))))
我遇到了以下错误:
org.apache.spark.sql.AnalysisException: cannot resolve 'jsontostructs(`value`)' due to data type mismatch: Input schema string must be a struct or an array of structs
也尝试了以下方法
inputDS.select(explode(col("value")))
我遇到了如下错误。
org.apache.spark.sql.AnalysisException: cannot resolve 'explode(`value`)' due to data type mismatch: input to function explode should be array or map type, not StringType
from_json
部分。只需尝试inputDS.select(explode(col("value")))
即可。 - Shaidoorg.apache.spark.sql.AnalysisException: 由于数据类型不匹配,无法解析 'explode(
value)':传递给函数 explode 的输入应该是数组或映射类型,而不是 StringType
。 - user1870400split
函数,并将其与explode
一起使用。你能再次检查输入并更新问题吗? - Shaido