【问题标题】:Spark : anti-join two DStreamsSpark:反加入两个 DStream
【发布时间】:2016-04-15 12:14:04
【问题描述】:

我可以在两个 Spark DStream 上进行 JOIN,例如:

val joinStream = stream1.join(stream2)

现在,如果我需要过滤掉所有未加入的记录怎么办。本质上,类似于stream1.anti-join(stream2)。这有可能吗?

感谢并感谢任何帮助!

【问题讨论】:

  • 我不明白你说的反加入是什么意思
  • JOIN 发生在具有共同 Key 的记录之间,对吗?我需要来自两个流的所有记录,这些记录没有共同的 JOIN 键。
  • 我从未在流上尝试过。我不确定它是否存在。
  • 基本上你必须做一个full_outer 连接,然后过滤掉结果连接行两侧没有null 值的记录。

标签: scala apache-spark apache-spark-sql spark-streaming


【解决方案1】:

假设你有这些:

val rdd1 = sc.parallelize(Array(
  (1, "one"),
  (2, "twow"),
  (3, "three"),
  (4, "four"),
  (5, "five")
))
val rdd2 = sc.parallelize(Array(
  (1, "otherOne"),
  (4, "otherFour"),
  (5,"otherFive"),
  (6,"six"),
  (7,"seven")
))

val antiJoined = rdd1.fullOuterJoin(rdd2).filter(r => r._2._1.isEmpty || r._2._2.isEmpty)

antiJoined.collect foreach println
(6,(None,Some(six)))
(2,(Some(twow),None))
(3,(Some(three),None))
(7,(None,Some(seven)))

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2017-08-28
    • 2016-09-07
    • 2016-01-24
    • 1970-01-01
    相关资源
    最近更新 更多