gpt4 book ai didi

apache-spark - 如何使用 usingColumns 连接 spark 中的嵌套列

转载 作者:行者123 更新时间:2023-12-02 00:30:52 24 4
gpt4 key购买 nike

我有 2 个要加入的数据框。

DF1:

root
|-- myStruct: struct (nullable = true)
| |-- id: string (nullable = true)
| |-- region: long (nullable = true)
|-- first_name: string (nullable = true)

DF2:

root
|-- id: string (nullable = true)
|-- region: long (nullable = true)
|-- second_name: string (nullable = true)

我的加入声明是

df1.join(df2, Seq("id", "region"), "leftouter")

但是失败了

USING column `id` cannot be resolved on the left side of the join. The left-side columns: myStruct, first_name

我在 Scala 上运行 Spark 2.2

最佳答案

您可以使用. 符号从struct 列中选择一个元素。所以要从 df1 中选择 id 你必须做 myStruct.id 并选择 region 你必须使用myStruct.region

并且因为要使用的列名称不同,您可以使用=== 表示法进行比较,如

df1.join(df2, df1("myStruct.id") === df2("id") && df1("myStruct.region") === df2("region"), "leftouter")

您应该拥有具有以下架构的连接dataframe

root
|-- myStruct: struct (nullable = true)
| |-- id: string (nullable = true)
| |-- region: long (nullable = false)
|-- first_name: string (nullable = true)
|-- id: string (nullable = true)
|-- region: integer (nullable = true)
|-- second_name: string (nullable = true)

您可以在加入后删除不需要的列,或者在加入后选择仅需要的列

希望回答对你有帮助

关于apache-spark - 如何使用 usingColumns 连接 spark 中的嵌套列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com