Spark SQL平均值首次触发时为空

时间:2018-08-27 13:33:22

标签: spark-structured-streaming

为什么火花sql流的“平均”值首次触发为空?

  • 尝试了更新和完整模式
  • kafka最新偏移量中是否存在数据,结果都是相同的
  • 仅count即将变为0,而所有其他聚合函数都给出null
  • 我不希望解决方案为空值处理dataset.first()

观察到的一点是,火花结构化流将使用空数据触发第一批数据,这是因为合计值变为空。为什么会这样?

下面是示例Java代码:

public static void main(String[] args) throws Exception {
        SparkSession spark = SparkSession.builder().appName("TestAggNull").config("spark.master", "local[2]")
                .config("spark.driver.bindAddress", "127.0.0.1")
                .config("spark.sql.shuffle.partitions", 1).getOrCreate();

        Dataset<Row> ds = spark.readStream()
                .format("kafka")
                .option("kafka.bootstrap.servers", "localhost:9092")
                .option("subscribe", "sampleTopic")
                .load().selectExpr("CAST(value AS STRING)");

        ds = ds.select(functions.avg(functions.col("value")));

        ds.writeStream()
            .format("console")
            .outputMode("update").start();

        spark.streams().awaitAnyTermination();
    }

0 个答案:

没有答案