Apache spark 在Where条件下使用Subselect触发数据集
我尝试在Spark SQL中重新创建SQL查询。通常,我会在如下表中插入:Apache spark 在Where条件下使用Subselect触发数据集,apache-spark,apache-spark-dataset,Apache Spark,Apache Spark Dataset,我尝试在Spark SQL中重新创建SQL查询。通常,我会在如下表中插入: INSERT INTO Table_B ( primary_key, value_1, value_2 ) SELECT DISTINCT primary_key, value_1, value_2 FROM Table_A WHERE NOT EXISTS ( SELECT 1 FROM Table_B WHERE Table_B.primary_ke
INSERT INTO Table_B
(
primary_key,
value_1,
value_2
)
SELECT DISTINCT
primary_key,
value_1,
value_2
FROM
Table_A
WHERE NOT EXISTS
(
SELECT 1 FROM
Table_B
WHERE
Table_B.primary_key = Table_A.primary_key
);
Spark SQL非常简单,我可以从新数据集中的TempView加载数据。不幸的是,我不知道如何重构where子句
Dataset<Row> Table_B = spark.sql("SELECT DISTINCT primary_key, value_1, value_2 FROM Table_A").where("NOT EXISTS ... ???" );
Dataset Table_B=spark.sql(“从表_A中选择不同的主键、值_1、值_2”)。其中(“不存在…”;
SparkSQL当前不存在&IN。“”
始终可以使用“联接”或“左半联接”重写中存在的(&IN)。“”或始终可以使用UNION重写。并且不能使用EXCEPT重写。SparkSQL当前没有EXISTS&IN。“”
始终可以使用“联接”或“左半联接”重写中存在的(&IN)。“”或始终可以使用UNION重写。和NOT可以使用EXCEPT重写。TSQL中不存在的查询可以使用带有“where”的左连接重写: 也许,类似的方法也可以用在Spark中,使用左连接。例如,对于数据帧,类似以下内容:
aDF.join(bDF,aDF("primary_key")===bDF("primary_key"),"left_outer").filter(isnull(col("other_b_not_nullable_column")))
TSQL中不存在的查询可以使用带有“where”的左连接重写: 也许,类似的方法也可以用在Spark中,使用左连接。例如,对于数据帧,类似以下内容:
aDF.join(bDF,aDF("primary_key")===bDF("primary_key"),"left_outer").filter(isnull(col("other_b_not_nullable_column")))