我在我的存储库中看到它警告我要使用union
,而我应该使用unionByName
. 这些不是一回事吗?我为什么要关心使用哪一个?
1 回答
4
在PySpark 文档中指出,对于union
:
同样作为 SQL 中的标准,此函数按位置(而不是名称)解析列。
在大多数情况下,这很危险,就好像您的架构具有相同的类型但名称/用途不同,您可能会默默地合并不同且不兼容的架构。即如果 schema1 is[('col1', T.IntegerType()), ('col2', T.StringType())]
和 schema2 is [('col3', T.IntegerType()), ('col4', T.StringType())]
,即使 col1 和 col3 具有根本不同的含义,它们也可以成功合并, col2 和 col4 也是如此union
这与unionByName不同,在于:
此函数与 union() 的区别在于此函数按名称解析列(而不是按位置)
在大多数情况下,这是一种更安全的联合方式,因此是首选。
于 2022-01-18T14:08:24.640 回答