gpt4 book ai didi

hadoop - 将数据插入 Hive 分区而不覆盖现有数据

转载 作者:行者123 更新时间:2023-12-02 21:36:43 25 4
gpt4 key购买 nike

假设我有两个本地文件 file1.txt 和 file2.txt。

file1.txt 的内容:

1,a
3,c

file2.txt 的内容
2,b
4,d

我已经像这样将文件放在Hadoop上
hadoop fs -rm -r /user/cloudera/repart2/*
hadoop fs -mkdir -p /user/cloudera/repart2/20150401
hadoop fs -put file1.txt /user/cloudera/repart2/20150401/
hadoop fs -mkdir -p /user/cloudera/repart2/20150402
hadoop fs -put file2.txt /user/cloudera/repart2/20150402/

我做了一个 Hive 表
# Select a test database
use training;

# Create the table
create external table repart (
col1 int, col2 string)
PARTITIONED BY (Test int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
location '/user/cloudera/repart2';

# Add partititons
ALTER TABLE repart ADD PARTITION (Test='20150401') LOCATION '/user/cloudera/repart2/20150401/';
ALTER TABLE repart ADD PARTITION (Test='20150402') LOCATION '/user/cloudera/repart2/20150402/';

当我做一个选择语句
select * from repart;

表明
1   a   20150401
3 c 20150401
2 b 20150402
4 d 20150402

我希望我的 table 最终看起来像这样
1   a   20150401
2 b 20150401
3 c 20150401
4 d 20150401
2 b 20150402
4 d 20150402

但是当我尝试插入查询时
INSERT INTO TABLE repart PARTITION (Test='20150401') select col1, col2 FROM repart where Test = 20150402;

该查询使表看起来像这样。分区 20150401 中的原始数据已被覆盖。
2   b   20150401
4 d 20150401
2 b 20150402
4 d 20150402

“hive --version”命令返回:0.12.0-cdh5.0.0。我注意到 this jira ,但是我的表已经全部小写了,所以我不确定出了什么问题。

最佳答案

当我使用 Hive 1.1.0-cdh5.4.0 时,相同的代码运行没有问题。它一定是在 0.12 左右坏掉了。我只会使用新版本。如果有人知道为什么 0.12.0 崩溃了,我仍然会感兴趣。

关于hadoop - 将数据插入 Hive 分区而不覆盖现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com