Я пытаюсь понять, как работает потоковая передача в spark
.
У меня есть файл в каталоге /data/flight-data/csv/
.Он имеет следующие данные:
DEST_COUNTRY_NAME ORIGIN_COUNTRY_NAME count
United States Romania 15
United States Croatia 1
United States Ireland 344
Egypt United States 15
Я подумал проверить, что произойдет, если я прочитаю файл как поток, а не как пакет.Сначала я создал Dataframe
, используя read
scala> val dataDF = spark.read.option("inferSchema","true").option("header","true").csv("data/flight-data/csv/2015-summary.csv");
[Stage 0:> dataDF: org.apache.spark.sql.DataFrame = [DEST_COUNTRY_NAME: string, ORIGIN_COUNTRY_NAME: string ... 1 more field]
, затем взял схему из него и создал новый Dataframe
scala> val staticSchema = dataDF.schema;
staticSchema: org.apache.spark.sql.types.StructType = StructType(StructField(DEST_COUNTRY_NAME,StringType,true), StructField(ORIGIN_COUNTRY_NAME,StringType,true), StructField(count,IntegerType,true))
scala> val dataStream = spark.readStream.schema(staticSchema).option("header","true").csv("data/flight-data/csv");
dataStream: org.apache.spark.sql.DataFrame = [DEST_COUNTRY_NAME: string, ORIGIN_COUNTRY_NAME: string ... 1 more field]
Затем я запустил поток.Путь для контрольной точки и вывода (я полагаю) - это каталог `/ home / manu / test", который изначально пуст.
scala> dataStream.writeStream.option("checkpointLocation","home/manu/test").start("/home/manu/test");
res5: org.apache.spark.sql.streaming.StreamingQuery = org.apache.spark.sql.execution.streaming.StreamingQueryWrapper@5c7df5f1
Возвращаемое значение start
равно StreamingQuery
, которое я прочитал:A handle to a query that is executing continuously in the background as new data arrives. All these methods are thread-safe.
Я заметил, что теперь в каталоге есть каталог _spark_metadata
, но больше ничего нет.
Вопрос1 - Что такое каталог _spark_metadata
? Я заметил, что он пуст.он использовался для?
Вопрос 2. Больше ничего не происходит. Это потому, что я не выполняю никаких запросов к Dataframe
dataStream
(или я должен сказать, что запрос неделать что-нибудь полезное)?