Я бы сказал, что вам нужно запустить UDF, где вы можете применить логику для преобразования массива в строку, а затем выбрать новый столбец
я есть pyspark dataframe со столбцом с именемфильтры: "массив>"
Я хочу сохранить мой dataframe в файле 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"}]}
Спасибо !!