【发布时间】:2017-09-06 21:50:08
【问题描述】:
我有一个 pyspark 数据框,其中有一列名为 Filters: "数组>"
我想将我的数据框保存在 csv 文件中,为此我需要将数组转换为字符串类型。
我尝试转换它:DF.Filters.tostring() 和 DF.Filters.cast(StringType()),但两种解决方案都会为过滤器列中的每一行生成错误消息:
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@56234c19
代码如下
from pyspark.sql.types import StringType
DF.printSchema()
|-- ClientNum: string (nullable = true)
|-- Filters: array (nullable = true)
|-- element: struct (containsNull = true)
|-- Op: string (nullable = true)
|-- Type: string (nullable = true)
|-- Val: string (nullable = true)
DF_cast = DF.select ('ClientNum',DF.Filters.cast(StringType()))
DF_cast.printSchema()
|-- ClientNum: string (nullable = true)
|-- Filters: string (nullable = true)
DF_cast.show()
| ClientNum | Filters
| 32103 | org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@d9e517ce
| 218056 | org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@3c744494
示例 JSON 数据:
{"ClientNum":"abc123","Filters":[{"Op":"foo","Type":"bar","Val":"baz"}]}
谢谢!!
【问题讨论】:
-
你能分享一下最小代码吗?
-
能否在转换前打印模式并显示数据。转换后也打印模式。
-
架构似乎是正确的。
-
M 无法重现该问题。你能在转换之前显示数据吗?
标签: python sql apache-spark pyspark spark-dataframe