【发布时间】:2018-03-04 12:09:42
【问题描述】:
我正在为 Apache Spark 使用 Java API,并且我有两个数据集 A 和 B。 这两者的架构是相同的:电话号码、姓名、年龄、地址
两个数据集中有一条记录以 PhoneNumber 为 common,但该记录中的其他列不同
我在这两个数据集上运行以下 SQL 查询(通过将它们注册为临时表):
A.createOrReplaceTempView("A");
B.createOrReplaceTempView("B");
String query = "Select * from A UNION Select * from B";
Dataset<Row> result = sparkSession.sql(query);
result.show();
出乎意料的是,结果只有一条具有相同PhoneNumber的记录,而另一条被删除了。
我知道 UNION 是 SQL 查询旨在删除重复,但它还需要知道主键,根据它决定什么是重复的。
此查询如何推断我的数据集的“主键”? (Spark中没有主键的概念)
【问题讨论】:
标签: apache-spark apache-spark-sql