Я бы сказал, что вам нужно запустить 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"}]}

Спасибо !!

Ответы на вопрос(2)

Ваш ответ на вопрос