我正在努力仅将另一个表中的指定值插入 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/