我用的是结构化流。我需要左键联接一个巨大的(数十亿行)cassandra表,以了解micro batch中的源数据是新的还是存在于id col中。如果我执行以下操作:
val src = spark.read.cassandraFormat("src", "ks").load().select("id")
val query= some_dataset
.join(src, expr("src.id=some_dataset.id"), joinType = "leftOuter")
.withColumn("flag", expr("case when src.id is null then 0 else 1 end"))
.writeStream
.outputMode("update")
.foreach(...)
.start
cassandra是否可以按下左连接并在源delta中查找连接列值?有没有办法判断是否发生了推倒?
谢谢
1条答案
按热度按时间0kjbasz61#
不在spark cassandra连接器的开源版本中。在dse分析中有一个对dse direct join的支持,所以如果您使用datastax enterprise,您将得到它。如果您使用的是oss连接器,则仅限于RDDAPI。
更新,2020年5月:自SCC2.5.0以来,支持Dataframe上的优化连接以及其他商业功能。有关详细信息,请参阅此博客文章。