为什么我的查询因AnalysisException而失败?

时间:2017-07-28 06:27:09

标签: scala apache-spark spark-structured-streaming

我是Spark流媒体的新手。我正在尝试使用本地csv文件进行结构化Spark流式传输。处理时我收到以下异常。

Exception in thread "main" org.apache.spark.sql.AnalysisException: Queries with streaming sources must be executed with writeStream.start();;
FileSource[file:///home/Teju/Desktop/SparkInputFiles/*.csv]

这是我的代码。

val df = spark
  .readStream
  .format("csv")
  .option("header", "false") // Use first line of all files as header
  .option("delimiter", ":") // Specifying the delimiter of the input file
  .schema(inputdata_schema) // Specifying the schema for the input file
  .load("file:///home/Teju/Desktop/SparkInputFiles/*.csv")

val filterop = spark.sql("select tagShortID,Timestamp,ListenerShortID,rootOrgID,subOrgID,first(rssi_weightage(RSSI)) as RSSI_Weight from my_table where RSSI > -127 group by tagShortID,Timestamp,ListenerShortID,rootOrgID,subOrgID order by Timestamp ASC")
val outStream = filterop.writeStream.outputMode("complete").format("console").start()

我创建了cron作业所以每隔5分钟我会得到一个输入csv文件。我试图通过Spark流式解析。

2 个答案:

答案 0 :(得分:0)

(这不是一个解决方案,而是更多的评论,但考虑到它的长度,它最终会在这里结束。我会在收集到足够的信息进行调查后立即作出答案。)

我的猜测是您在df上做的事情不正确,但您未在问题中提及。

由于错误消息大约为FileSource,路径如下所示,并且它是一个必须为df的流式数据集。

  

FileSource [文件:///home/Teju/Desktop/SparkInputFiles/*.csv]

鉴于我猜测的其他行,您将流数据集注册为临时表(即my_table),然后在spark.sql中使用它来执行SQL和{{ 1}}到控制台。

writeStream

如果这是正确的,那么您在问题中包含的代码就不完整,并且会显示错误原因。

答案 1 :(得分:-1)

.writeStream.start添加到您的df,正如异常告诉您的那样。

阅读docs了解更多详情。