Структурированная потоковая передача Spark через облачное хранилище Google

Я использую несколько пакетных конвейеров Spark, которые потребляют данные Avro в облачном хранилище Google. Мне нужно обновить некоторые конвейеры, чтобы они работали в режиме реального времени, и мне интересно, может ли потоковая передача с искровой структурой напрямую потреблять файлы из gcs в потоковом режиме, т.е. parkContext.readstream.from(...) может применяться к файлам Avro, которые постоянно создаются в ведре из внешних источников.

В луче Apache уже есть что-то вроде File.MatchAll().continuously(), Watch, watchnewFiles, которые позволяют конвейерам лучей отслеживать новые файлы и читать их в потоковом режиме (тем самым устраняя необходимость в pubsub или системе уведомлений). Есть ли что-то подобное и для структурированной потоковой передачи Spark?


person user179156    schedule 05.01.2018    source источник


Ответы (1)


Поскольку соединитель GCS предоставляет Hadoop-совместимую файловую систему (HCFS), URI «gs: //» должны быть допустимыми целями для SparkSession.readStream.from.

Обработка файлов Avro осуществляется spark-avro. Использование его с readStream должно выполняться так же, как и обычное чтение (например, .format("com.databricks.spark.avro"))

person Angus Davis    schedule 05.01.2018
comment
Спасибо. Не могли бы вы также сказать, выполняется ли чтение потока таких файлов ровно один раз (в отличие от помещения их в очередь kafka)? Если мое задание потоковой передачи завершится неудачно и перезапущу другое, буду ли я читать только новые файлы, созданные после запуска задания, или есть ли у меня способ прочитать старые необработанные файлы, которые были сгенерированы между отказом конвейера и перезапуском? Нужно ли мне устанавливать какие-либо контрольные точки или конфигурацию, чтобы включить это - person user179156; 06.01.2018
comment
Да, вы захотите включить контрольную точку метаданных: spark.apache.org/docs/latest/ - person Angus Davis; 06.01.2018
comment
github.com/ jaceklaskowski / spark-structured-streaming-book / blob /: кажется, что avro не поддерживается, не могли бы вы подтвердить - person user179156; 10.05.2018