把数据灌到已有hive表里

0. 如果原来的表里有分区最好先把分区删掉。

    例如如果原来的表里有一个叫‘date’的分区,新灌入的数据里如果也有叫‘date’的分区,新数据灌入以后可能读不出来。

--在hive中操作
alter table table10_jin drop partition(tablename='alp',data_date='alp',part1='alp',part2='alp');

1. 更改原始数据的间隔:

sed -i 's/\t/\x01/g' nohead_samples_all_flag_new.txt

2. 用readlink命令直接获取$0参数的全路径文件名

readlink -f nohead_samples_all_flag_new1.txt

注:以下3-6需要在hive中操作。

3. 修改表/分区的文件格式

alter table table10_jin set fileformat textfile;

4.增加/替换列

增加或者替换列的语句如下,其中ADD COLUMNS在现有列之后但在分区列之前增加新列,REPLACE COLUMNS先删除现存列,然后再增加新列。

alter table table10_jin replace columns(
imei        string,
apply_date  string,
flag        string,
date        string);

5. 导入数据

把已经有的4个分区先用”alp“填充好。

load data local inpath '/data/rong/zhuli/common_fraud_model/nohead_samples_all_flag_new1.txt' overwrite into table table10_jin partition(tablename='alp',data_date='alp',part1='alp',part2='alp'); 

6. 修改表名

alter table table10_jin rename to alp_common_antifraud_samples;

猜你喜欢

转载自blog.csdn.net/yuxeaotao/article/details/85629276