代码之家  ›  专栏  ›  技术社区  ›  Atharv Thakur

Union不会删除spark数据帧中的重复行

  •  0
  • Atharv Thakur  · 技术社区  · 6 年前

    我有两个数据帧如下

    +--------------------+--------+-----------+-------------+
    |UniqueFundamentalSet|Taxonomy|FFAction|!||DataPartition|
    +--------------------+--------+-----------+-------------+
    |192730241374        |1       |I|!|       |Japan        |
    |192730241374        |2       |I|!|       |Japan        |
    |192730241373        |1       |I|!|       |Japan        |
    |192730241373        |2       |I|!|       |Japan        |
    +--------------------+--------+-----------+-------------+
    
    +--------------------+--------+-----------+-------------+
    |UniqueFundamentalSet|Taxonomy|FFAction|!||DataPartition|
    +--------------------+--------+-----------+-------------+
    |192730241374        |1       |I|!|       |Japan        |
    |192730241374        |2       |I|!|       |Japan        |
    |192730391384        |1       |I|!|       |Japan        |
    |192730391384        |2       |I|!|       |Japan        |
    |192730241373        |1       |I|!|       |Japan        |
    |192730241373        |2       |I|!|       |Japan        |
    +--------------------+--------+-----------+-------------+
    

    当我在上面的数据帧之间执行并集时,我得到了重复的行。 这是我的输出

    +--------------------+--------+-----------+-------------+
    |UniqueFundamentalSet|Taxonomy|FFAction|!||DataPartition|
    +--------------------+--------+-----------+-------------+
    |192730241374        |1       |I|!|       |Japan        |
    |192730241374        |2       |I|!|       |Japan        |
    |192730241373        |1       |I|!|       |Japan        |
    |192730241373        |2       |I|!|       |Japan        |
    |192730241374        |1       |I|!|       |Japan        |
    |192730241374        |2       |I|!|       |Japan        |
    |192730391384        |1       |I|!|       |Japan        |
    |192730391384        |2       |I|!|       |Japan        |
    |192730241373        |1       |I|!|       |Japan        |
    |192730241373        |2       |I|!|       |Japan        |
    +--------------------+--------+-----------+-------------+
    
    val dfToSave = dfMainOutput.union(insertdf)
    

    我的印象是union删除重复的行,unionall保留它。

    1 回复  |  直到 6 年前
        1
  •  7
  •   user10412380    4 年前

    你的印象不对。如中所述 the official documentation

    返回一个新的数据集,其中包含此数据集中的行和另一个数据集中的行的并集>。

    这相当于SQL中的UNION ALL。要执行SQL样式集联合(执行元素的重复数据消除),请使用此函数,然后使用 distinct .