apache - Hive - 将 select 语句中的指定值插入到表和分区值中

标签 apache hadoop hive hql partition

我正在努力仅将另一个表中的指定值插入 Hive 中的分区表,因为我无法弄清楚如何在同一插入语句中指定分区列和特定列。我已经阅读了分区列值需要是 select 语句中的最后两个,并且按照它们在分区中出现的顺序。但是查询随后提示选择有 5 个结果,但只有 3 个要插入。

任何帮助将不胜感激。

CREATE TABLE IF NOT EXISTS tableName (
code INT,
value1 DECIMAL(12, 8),
value2 DECIMAL(12, 8),
)
PARTITIONED BY(part1 DECIMAL(10, 3), part2 DECIMAL(10, 3));

INSERT INTO TABLE tableName
PARTITION 
(
part1,
part2
) 
(
code,
value1,
value2,
)
SELECT 
code,
value1,
value2,
ROUND(value1, 2),
ROUND(value2, 2) 
FROM importData;

最佳答案

不知道为什么在两条语句中有五个分区 ( part1, part2 ) ( code, value1, value2, ) .您是正确的,最后说明了分区列。也许这个简化的示例将帮助您走上正确的轨道来完成您所追求的目标。

INSERT INTO TABLE tblnm PARTITION (p1,p2)
SELECT code, value1, value2, ROUND(value1, 2) as p1, ROUND(value2, 2) as p2
FROM importData;

- 更新
请问你为什么有(code,value1,value2,)在你的分区之后?

这应该有效:
CREATE TABLE IF NOT EXISTS tableName (
code INT,
value1 DECIMAL(12, 8),
value2 DECIMAL(12, 8),
)
PARTITIONED BY(part1 DECIMAL(10, 3), part2 DECIMAL(10, 3));

INSERT INTO TABLE tableName PARTITION (part1,part2) 
  SELECT 
    code,
    value1,
    value2,
    ROUND(value1, 2),
    ROUND(value2, 2) 
  FROM importData;

关于apache - Hive - 将 select 语句中的指定值插入到表和分区值中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42976307/

相关文章:

c - 检索 apr_pool_tag 标签值

angular - Localhost 为我的 Angular 应用程序发送了无效响应

hadoop - $HADOOP_HOME 已弃用

scala - Spark SQL配置单元连接错误

php - mod_fcgid : can't apply process slot for/web/cgi-bin/php-fcgi

hadoop - 自定义 WritableCompare 将对象引用显示为输出

hadoop - Sqoop snappy 压缩不起作用

hadoop - 有什么工具可以让我从两个表中加入数据——一个在 hive 中,另一个在 cassandra 中。我也必须通过 oozie 来完成这项工作

mysql - 配置单元使用 mysql 元存储

php - SSL 错误 SSL3_GET_SERVER_CERTIFICATE :certificate verify failed