Hive 中的 INSERT OVERWRITE 是否按名称或序号位置插入?

Does INSERT OVERWRITE in Hive insert by name or ordinal position?

我想知道 Hive 中的 INSERT OVERWRITE 在 Apache Spark 中是如何工作的。我们仅覆盖特定分区并使用以下查询:

INSERT OVERWRITE TABLE tableName1 PARTITION (col1=val1) SELECT * FROM tableName2

这将覆盖特定分区并保持其他分区不变。这是按顺序写的还是按名字写的?我似乎找不到任何文档来回答这个具体问题。

如有任何帮助,我们将不胜感激。

在这种情况下,Hive on Spark 的工作方式与 Hive 在 Spark 之外的工作方式相同。

Programming Hive 书中的第 5 章 - HiveQL:数据操作 - 将数据插入表 部分清楚地说明了以下内容:

Hive determines the values of the partition keys... , from the last <n> columns in the SELECT clause. ... the relationship between the source column values and the output partition values is by position only and not by matching on names.

希望对您有所帮助。