我正在使用pyspark 2.2.0创建一个Spark Streaming应用程序
我能够创建流式查询
from pyspark.sql import SparkSession
from pyspark.sql.functions import explode
from pyspark.sql.functions import split
spark = SparkSession \
.builder \
.appName("StreamingApp") \
.getOrCreate()
staticDataFrame = spark.read.format("parquet")\
.option("inferSchema","true").load("processed/Nov18/")
staticSchema = staticDataFrame.schema
streamingDataFrame = spark.readStream\
.schema(staticSchema)\
.option("maxFilesPerTrigger",1)\
.format("parquet")\
.load("processed/Nov18/")
daily_trs=streamingDataFrame.select("shift","date","time")
.groupBy("date","shift")\
.count("shift")
writer = df.writeStream\
.format("parquet")\
.option("path","data")\
.option("checkpointLocation","data/checkpoints")\
.queryName("streamingData")\
.outputMode("append")
query = writer.start()
query.awaitTermination()
查询正在流式传输,并且“ processed / Nov18”的所有其他文件都将被处理并存储到“ data /”
如果流式传输失败,我想重新启动相同的查询
解决方案的路径
根据官方文档,我可以获得一个可用于重新启动查询的ID https://spark.apache.org/docs/2.2.0/api/python/pyspark.sql.html?highlight=streamingquery#pyspark.sql.streaming.StreamingQuery.id
pyspark.streaming模块包含具有类方法的StreamingContext类
classmethod getActiveOrCreate(checkpointPath,setupFunc) https://spark.apache.org/docs/latest/api/python/pyspark.streaming.html#pyspark.streaming.StreamingContext.getOrCreate
可以以某种方式使用这些方法吗?
是否有人可以使用生产就绪的流媒体应用程序作为参考?
答案 0 :(得分:1)
您应该简单地(重新)启动具有可用检查点目录的pyspark应用程序,其余的工作由Spark Structured Streaming完成。无需更改。
是否有人可以使用生产就绪的流媒体应用程序作为参考?