Периодически выполнять запрос куста без блокировки при выполнении заданий потоковой передачи - PullRequest
0 голосов
/ 27 марта 2019

Как периодически выполнять запрос MSCK REPAIR TABLE database.table неблокирующим способом? Поддерживает ли Spark Streaming это изначально или я должен полагаться на модуль потоков Python?

У меня есть потоковое задание, в котором данные хранятся в виде паркетных файлов. Я хочу периодически обновлять таблицу Hive, которая определена поверх файлов паркета.

Я хочу сделать что-то вроде следующего:

df = (spark.readStream
          .format('parquet')
          .schema(schema)
          .load(input_directory)

df.writeStream
          .format('parquet')
          .queryName('process')
          .trigger(processing_time)
          .outputMode('append')
          .option('checkpointLocation', checkpoint_dir)
          .partitionBy(partition)
          .start(output_directory)

repair_query = spark.sql("MSCK REPAIR TABLE db.table", interval='10 seconds')

[query.awaitTermination() for query in spark.streams.active]

repair_query.stop()

Использование искры 2.3.0

...