#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.