sql - Hive 中的 INSERT OVERWRITE 是否按名称或序号位置插入?
问题描述
我想知道 Hive 中的 INSERT OVERWRITE 如何在 Apache Spark 中工作。我们仅覆盖特定分区并使用以下查询:
INSERT OVERWRITE TABLE tableName1 PARTITION (col1=val1) SELECT * FROM tableName2
这将覆盖特定分区并保留其他分区。这是按序号位置还是按名称写的?我似乎找不到任何文档来回答这个特定问题。
任何帮助,将不胜感激。
解决方案
在这种情况下,Spark 上的 Hive 将以与 Spark 之外的 Hive 相同的方式工作。
Programming Hive书中的第 5 章 - HiveQL:数据操作-将数据插入表部分清楚地说明了以下内容:
<n>
Hive 从SELECT 子句中的最后一列确定分区键的值...。 ...源列值和输出分区值之间的关系仅按位置而不是通过名称匹配。
希望这可以帮助。
推荐阅读
- firebase - 如何在firebase存储触发函数中获取公共下载链接:“onFinalize”?
- html - 如何在 AngularJS 中使用图像作为背景?
- java - SQL未在java方法中执行
- c++ - 为什么这个函数会产生不正确的值?
- java - 泛型方法覆盖其基的泛型方法
- spring - OneToOne ConstraintViolation 同时保存新记录,PK 提供
- jquery - JQuery Ajax请求在android上返回错误
- windows - 如何在向量异常处理程序中打印信息性错误消息?
- vue.js - 类型错误 global.XMLHttpRequest 不是 NUXT 中的构造函数
- c# - 如何简化多个嵌套的 foreach 循环?