首页 > 解决方案 > Hive 中的 INSERT OVERWRITE 是否按名称或序号位置插入?

问题描述

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

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

这将覆盖特定分区并保留其他分区。这是按序号位置还是按名称写的?我似乎找不到任何文档来回答这个特定问题。

任何帮助,将不胜感激。

标签: sqlapache-sparkhiveinsertoverwrite

解决方案


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

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

<n>Hive 从SELECT 子句中的最后一列确定分区键的值...。 ...源列值和输出分区值之间的关系仅按位置而不是通过名称匹配。

希望这可以帮助。


推荐阅读