Лучшая практика Spark для загрузки схемы

#python #apache-spark #pyspark #streaming #spark-structured-streaming

#python #apache-spark #pyspark #потоковая передача #spark-структурированная потоковая передача

Вопрос:

Я работаю с Spark в некоторых проектах структурированной потоковой передачи, и чаще всего мне нужно указать схему для данных, которые я обрабатываю. Схема часто довольно сложная, поэтому я обычно вывожу ее из файла образца и сохраняю в переменной; затем я использую эту переменную, когда запускаю процесс потоковой передачи.

Это код, который я написал:

 staticDF = spark.read.json("/path/to/file/sample.json", multiLine=True)
mySchema = staticDF.schema

streamedData = spark
    .readStream
    .json(origin, schema=mySchema, allowUnquotedFieldNames=True, multiLine=True)
  

Это означает, что каждый раз, когда я запускаю свое приложение, я должен обрабатывать файл JSON, создавать фрейм данных и получать из него схему.

Я хотел знать, есть ли лучший / более эффективный способ сделать это, возможно, сохранив схему в файле, чтобы ее можно было использовать позже. Я использую python 2.7 и pyspark-3.0.0

Спасибо 🙂

Комментарии:

1. схема сложна, но меняется ли она? вы можете сохранить свою схему в формате json и прочитать ее непосредственно из этого файла json в качестве параметра. вероятно, это быстрее, чем чтение и вывод файла json с помощью spark. Но это означает, что вам нужно сгенерировать файл схемы для каждого процесса.

2. @Steven это не меняется в рамках проекта, поэтому я мог бы это сделать, я просто не знаю, лучше ли сохранить его как файл JSON или в другом формате (например .pickle)

3. @MarcoBorinato ну, json доступен для чтения человеком, и файл будет всего в несколько КБ … следовательно, нет необходимости сериализовать его в формате pickle.