#python #apache-spark #pyspark #apache-spark-sql
Вопрос:
У меня есть сценарий, в котором моя схема файла может измениться.Например: подумайте, получаю ли я сейчас 3 столбца "A","B","C"
; в следующий раз я могу получить случай, когда в файл будут добавлены 2 новых столбца "A","B","C","D","E"
.
В этом случае я хочу добавить его в "other"
столбец (типа JSON) в фрейме данных примерно так
A B C others
------------
1 2 3 {"D":4,"E":5}
Также может быть случай, когда столбец может отсутствовать, например, я могу не получить столбец A и буду получать только «B», «C».
Как справиться с этим в пыспарке ?
Комментарии:
1. Прежде чем отклонить вопрос, пожалуйста, потратьте некоторое время, чтобы прочитать его должным образом. Все уже объяснено. Не будь таким грубым.
Ответ №1:
Вы можете использовать что-то вроде следующего —
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
df = spark.read.csv("demo.csv", header=True)
df_1 = df.select([c for c in df.columns if c not in {'A', 'B', 'C'}]) # this will give your unknown columns
df.select("A","B", "C", to_json(struct(df_1.columns)).alias("other")).show(10,False)
Примечание: в demo.csv есть эти столбцы ['A', 'B', 'C', 'D', 'E']
— этот список может отличаться, и среди них ['A', 'B', 'C']
есть ваши фиксированные/известные столбцы.
Комментарии:
1. Спасибо. Я попробовал это, И это работает.