Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark Structured Streaming left outer joins为已匹配的行返回外部空值_Scala_Apache Spark_Spark Structured Streaming - Fatal编程技术网

Scala Spark Structured Streaming left outer joins为已匹配的行返回外部空值

Scala Spark Structured Streaming left outer joins为已匹配的行返回外部空值,scala,apache-spark,spark-structured-streaming,Scala,Apache Spark,Spark Structured Streaming,我基本上是使用Spark的中给出的例子和内置测试流,其中一个流领先3秒(最初使用kafka,但遇到了相同的问题)。结果正确地返回了匹配列,但是过了一段时间,相同的键返回了外部空值 这是预期的行为吗?当存在匹配项时,是否有方法排除重复的外部空结果 代码: 不幸的是,看起来您遇到了可用的正确性问题,但审查有点拖拉 鉴于补丁有点大,您可能不想尝试手动将补丁移植回您的版本。那么我认为你最好的办法就是要求提交者尽快审查补丁,以及要求将你使用的东西移植回版本行 val testStream = sessio

我基本上是使用Spark的中给出的例子和内置测试流,其中一个流领先3秒(最初使用kafka,但遇到了相同的问题)。结果正确地返回了匹配列,但是过了一段时间,相同的键返回了外部空值

这是预期的行为吗?当存在匹配项时,是否有方法排除重复的外部空结果

代码:


不幸的是,看起来您遇到了可用的正确性问题,但审查有点拖拉

鉴于补丁有点大,您可能不想尝试手动将补丁移植回您的版本。那么我认为你最好的办法就是要求提交者尽快审查补丁,以及要求将你使用的东西移植回版本行

val testStream = session.readStream.format("rate")
  .option("rowsPerSecond", "5").option("numPartitions", "1").load()

val impressions = testStream
  .select(
    (col("value") + 15).as("impressionAdId"),
    col("timestamp").as("impressionTime"))

val clicks = testStream
  .select(
    col("value").as("clickAdId"),
    col("timestamp").as("clickTime"))


// Apply watermarks on event-time columns
val impressionsWithWatermark =
  impressions.withWatermark("impressionTime", "20 seconds")
val clicksWithWatermark =
  clicks.withWatermark("clickTime", "30 seconds")

// Join with event-time constraints
val result = impressionsWithWatermark.join(
  clicksWithWatermark,
  expr("""
clickAdId = impressionAdId AND
clickTime >= impressionTime AND
clickTime <= impressionTime + interval 10 seconds
"""),
  joinType = "leftOuter"      // can be "inner", "leftOuter", "rightOuter"
)

val query = result.writeStream.outputMode("update").format("console").option("truncate", false).start()
query.awaitTermination()