Apache spark Spark结构化流媒体-

Apache spark Spark结构化流媒体-,apache-spark,apache-kafka,spark-structured-streaming,Apache Spark,Apache Kafka,Spark Structured Streaming,我正试图从IntelliJ idea运行以下代码,以将消息从Kafka打印到控制台。但它抛出了以下错误- Exception in thread "main" org.apache.spark.sql.AnalysisException: Queries with streaming sources must be executed with writeStream.start();; Stacktrace从数据集开始。检查点向上。如果删除.checkpoint(),则会出现与权限相关的其他错

我正试图从IntelliJ idea运行以下代码,以将消息从Kafka打印到控制台。但它抛出了以下错误-

Exception in thread "main" org.apache.spark.sql.AnalysisException: Queries with streaming sources must be executed with writeStream.start();;
Stacktrace从
数据集开始。检查点
向上。如果删除
.checkpoint()
,则会出现与权限相关的其他错误

17/08/02 12:10:52 ERROR StreamMetadata: Error writing stream metadata StreamMetadata(4e612f22-efff-4c9a-a47a-a36eb533e9d6) to C:/Users/rp/AppData/Local/Temp/temporary-2f570b97-ad16-4f00-8356-d43ccb7660db/metadata
java.io.IOException: (null) entry in command string: null chmod 0644 C:\Users\rp\AppData\Local\Temp\temporary-2f570b97-ad16-4f00-8356-d43ccb7660db\metadata
资料来源:

def main(args:Array[String])={
val spark=SparkSession.builder().appName(“SparkStreaming”).master(“local[*]).getOrCreate()
val canonicalSchema=new StructType()
.add(“cid”,StringType)
.add(“uid”,字符串类型)
.add(“源系统”,
新建StructType()。添加(“id”,StringType)
.add(“名称”,字符串类型))
.add(“名称”,新结构类型()
.add(“名字”,StringType)
.add(“lastname”,StringType))
val消息=火花
.readStream
.格式(“卡夫卡”)
.option(“kafka.bootstrap.servers”,“localhost:9092”)
.期权(“认购”、“c_canonical”)
.选项(“起始偏移量”、“最早”)
.load()
.检查点()
.select(从_json(col(“value”).cast(“string”),canonicalSchema)
.writeStream.outputMode(“附加”).format(“控制台”).start.Termination
}
谁能帮我理解我做错了什么

  • 结构化流不支持
    Dataset.checkpoint()
    。有一个开放的票证可以提供更好的信息,或者干脆忽略它:

  • IOException可能是因为您没有在Windows上安装cygwin


  • 尝试以管理员身份运行IntelliJ。感谢您的回复,但这不起作用。虽然结构化流媒体不支持
    checkpoint()
    ,但它确实支持
    选项(“checkpoint location”,“/path/to/store”)
    。你觉得这叫什么?更新了答案。不幸的是,它们使用的是同一个词,但它们是完全不同的东西。我在哪里可以找到
    checkpointLocation
    的实际含义以及它的区别?“checkpointLocation”是结构化流媒体存储元数据和运行状态的地方,以便它可以从故障中重新启动。“Dataset.checkpoint”用于非流式数据集,它只将数据集的当前内容存储到文件系统中(由SparkContext.setCheckpointDir设置),因此不需要存储整个大型逻辑计划。它不支持恢复。这应该明确记录下来。