Разбор JSON, хранящегося в столбце таблицы в Python Spark

#python #pyspark #databricks

#python #pyspark #блоки данных

Вопрос:

Я пытаюсь проанализировать JSON и добавить столбец во фрейм данных с помощью Python Spark:

 tableDF = spark.sql("select  * from transaction")

stats_df = parseJSONCols(tableDF)

def parseJSONCols(df):
    res = df
    cols = ['State']

    for i in cols:
        schema = spark.read
            .json(res.rdd.map(lambda x: x[i]))
            .schema
        res = res.withColumn("selectedState", lit(filterSelectedState(col(i))))

    return res
  

где State — строка JSON с такой структурой:

 [
    {
        isSelected: true,
        name: 'x'
    },
    {
        isSelected: false,
        name: 'y'
    }
]
  

Я хочу извлечь значение isSelected поля и добавить его в selected столбец в tableDF .

Может кто-нибудь, пожалуйста, помочь мне достичь этого?

Ответ №1:

Вы, вероятно, хотите что-то вроде:

 df = df.withColumn('isSelected', f.col('State').getItem('isSelected'))
  

Однако было бы полезно просмотреть выходные данные say stats_df.take(2) , чтобы мы могли видеть точную структуру DF, с которой вы имеете дело.