pyspark结构化流(2.4.2)-foreach接收器

时间:2019-06-08 09:23:13

标签: pyspark pyspark-sql spark-structured-streaming

我正在dataproc GCP上运行spark 2.4.2,并将状态聚合应用于具有1天水印的流IOT数据,如下所示:

csvDF = sqlcontext \
    .readStream \
    .option("sep", ",") \
    .option("checkpointLocation", "gs://bucket_name/checkpoint") \
    .schema(schema) \
    .csv(bucket_path)

df_aggregated = csvDF \
                .withWatermark("date_time","1 day") \
                .groupBy(
                    csvDF.unique_device_id) \
                .agg(
                    sum(col('overall_measure1')),
                    sum(col('overall_measure2')),
                    sum(col('overall_measure3'))
                   )

def process_row(row):
          if row['overall_measure1'] >= 10000 : 
               #Write a file with a custom message to the gcs bucket
          print(row)
          pass

query = (

        df_aggregated.writeStream \
        .foreach(process_row)
        .outputMode("complete")
        .start()
    )

我的目标是获取每一行的总和,并检查是否有任何值(overall_measure1,overall_measure2,overall_measure3)超出某个值,比如说10000。如果是的话,我希望能够编写一些自定义消息发送到我的GCS存储桶。我已经尝试了以下方法,但是在任何地方都没有足够的文档,所以如果有人可以让我知道如何解决这个问题,我将不胜感激。

面临的问题-我无法使用foreach接收器捕获值,我的问题不是关于如何将自定义文件写入gcs存储桶。

0 个答案:

没有答案