hive导入数据

时间:2023-02-14 07:32:15
删除文档的第一行,文件导出第一行为列名
sed -i '1d' <file>
取第一行为日期的
cat hall.log | grep '2017-' > 0928.txt 替换分隔符为\
sed -i 's/\t/\x1/g;s/;/\x1/g' test1.txt gz压缩
gzip -r test1.txt 查看文件
hdfs dfs -ls /hive/warehouse/ods_jungle_ad.db/table1/dt=-- 导入文件
hive -i /data/app/offline_analyse/conf/hive/init_hive.sql  use ods_db;
load data local inpath '/home/hadoop/test/test1.txt.gz'
into table table1
partition (dt = '2016-12-15')

hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by '\001',如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v,ctrl+b。以此类推。

当前我们新建的Hive表中,默认fields terminated by没有设置,那么就使用'\001'。
 
create table muses_role_log
(
table_name string,
id int,
type string,
big_date string
)
partitioned by (dt string)

关键字[INTO]意思是追加到表,[OVERWRITE]意思是是覆盖原表里的数据。
 关键字[LOCAL]是指你加载文件的来源为本地文件,不写则为hdfs的文件。

如果是用程序接口直接写hdfs,需要执行如下语句hive才能访问

alter table ods_log.bigtable_log add partition (dt='2017-01-09',game_id='test');

  删除错误数据。直接删除分区(删除分区后需要添加分区,不让HIVE没法显示数据)

alter table tlog_bigtable drop partition(dt='2017-11-28' , game_id = 'gz_m')

全表删除

truncate table gz_m