Как собрать потоковый набор данных (в значение Scala)? - PullRequest
0 голосов
/ 09 января 2019

Как я могу сохранить значение кадра данных в переменной scala?

Мне нужно сохранить значения из приведенного ниже фрейма данных (при условии, что столбец «метка времени» производит одинаковые значения) в переменную, а затем мне нужно где-то использовать эту переменную

Я пытался подписаться

   val spark =SparkSession.builder().appName("micro").
   enableHiveSupport().config("hive.exec.dynamic.partition", "true").
   config("hive.exec.dynamic.partition.mode", "nonstrict").
   config("spark.sql.streaming.checkpointLocation", "hdfs://dff/apps/hive/warehouse/area.db").
   getOrCreate()

   val xmlSchema = new StructType().add("id", "string").add("time_xml", "string")
   val xmlData = spark.readStream.option("sep", ",").schema(xmlSchema).csv("file:///home/shp/sourcexml") 
   val xmlDf_temp = xmlData.select($"id",unix_timestamp($"time_xml", "dd/mm/yyyy HH:mm:ss").cast(TimestampType).as("timestamp"))
   val collect_time = xmlDf_temp.select($"timestamp").as[String].collect()(0)

ошибка, сказавшая следующее:

org.apache.spark.sql.AnalysisException: Запросы с потоковыми источниками должны выполняться с помощью writeStream.start ()

Можно ли как-нибудь сохранить значения данных в переменной и использовать позже?

1 Ответ

0 голосов
/ 11 января 2019

Есть ли способ сохранить значения данных в переменной и использовать позже?

Это невозможно в Spark Structured Streaming, поскольку потоковый запрос никогда не заканчивается и поэтому невозможно выразить collect.

и позже мне нужно где-то использовать эту переменную

Этот "позже" должен быть другим потоковым запросом, который вы могли бы join вместе и получить результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...