1 首先根据文件格式新建一个特定切分的表
如果数据是以tab键 分割时
新建表
CREATE EXTERNAL TABLE tmp.ods_test
(
id
bigint,
amount
double,
available_interest
double,
)
row format delimited fields terminated by ‘\t’ stored as textFile
LOCATION ‘hdfs://we-hdfs/home/hdfs/zhaolcDev/finance_test.txt’
采用 insert into 的方式 将数据插入不同格式表中
INSERT INTO TABLE ods.ods_log partition (dt=‘2019-01-29’)
select * FROM tmp.ods_test;
注意
1.:目标表为lzo 等压缩格式时 设置压缩方式
即为:
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;
INSERT INTO TABLE ods.ods_log partition (dt=‘2019-01-29’)
select * FROM tmp.ods_test;
2、线上操作时:本人建议新建一个分区 将数据先写入分区中,让后将location 路径下的文件(可能是lzo压缩文件)拷贝到缺失数据的分区路径下 避免污染数据
INSERT INTO TABLE ods.ods_log partition (dt=‘2019-01-29’)
select * FROM tmp.ods_test;
3、insert overwrite table 和 INSERT INTO TABLE一个数数据重写(旧数据会被删除)另一个数数据追加。
修改 表的压缩方式
ALTER TABLE ods_log
SET FILEFORMAT
INPUTFORMAT “com.hadoop.mapred.DeprecatedLzoTextInputFormat”
OUTPUTFORMAT “org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat”;
lzo结构表数据 查询时使用count(*)有数据,但是select * 是没有数据的
说明已将 LZO压缩过的表数据导入一个没有被压缩过表内,建议数据重新导入
也可以通过
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;
设置压缩方式查询