我很难将另一个表中的指定值插入到Hive中的分区表中,因为我无法弄清楚如何在同一个insert语句中指定分区列和特定列。我已经读过分区列值需要是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;
答案 0 :(得分:0)
不确定为什么在两个语句( 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;