在 spark java 中取两个数据集并集的必要条件是啥

Posted

技术标签:

【中文标题】在 spark java 中取两个数据集并集的必要条件是啥【英文标题】:What are necessary conditions for taking Union of two datasets in spark java在 spark java 中取两个数据集并集的必要条件是什么 【发布时间】:2019-11-30 13:01:50 【问题描述】:

什么是必要条件,例如没有列或相同的列或不同的列

【问题讨论】:

【参考方案1】:

假设您有两个数据框。

  val df1 = spark.sql("SELECT 1 as a,3 as c")
  val df2 = spark.sql("SELECT 1 as a,2 as b")

df1.union(df2) - 会起作用,因为它的条件是相同的列数

df1.union(df2).show()
+---+---+
|  a|  c|
+---+---+
|  1|  3|
|  1|  2|
+---+---+

如您所见,它采用 df1 列,并且仅通过 df2 列的索引匹配,而不是通过名称匹配。

如果您使用 unionByName,例如

  df1.unionByName(df2).show()

它不起作用,因为它尝试在 df2 中查找“c”列。

总而言之,两种联合样式都需要相同数量的列。 unionByName - 要求列的名称也相同。

【讨论】:

以上是关于在 spark java 中取两个数据集并集的必要条件是啥的主要内容,如果未能解决你的问题,请参考以下文章

sql server中取交集差集和并集的语法

Java使用不同方式获取两个集合List的交集补集并集(相加)差集(相减)

如何遍历 spark 数据集并更新 Java 中的列值?

Apache Spark Java - 如何遍历行数据集并删除空字段

比较两个数据集并获取更改了哪些字段

C#中求数组并集的算法