java 增删改查hive_Hive 表增删改查CRUD操作

建表操作

建立外部表

CREATE EXTERNAL TABLE dg_devicetoken_day ( id bigint, user_id bigint, device_token STRING, client_id int, badge int, ifa string, imei string, modifytime STRING ) PARTITIONED BY(p_day BIGINT) ROW FORMAT SERDE org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe STORED AS RCFILE LOCATION /user/hive/warehouse/dg/bigtables/dg_devicetoken_day;

建立临时表

临时表采用逗号 ‘,’ 分割

CREATE TABLE `dh_tmp_pt_data`( `id` string, `uid` string, `mobile` string, `client` string) row format delimited fields terminated by ,;

插入数据

查询表数据再插入

query_c="

INSERT OVERWRITE TABLE dg_devicetoken_day partition (p_day=${CUR_PARTITION}) select id,user_id,device_token,client_id,badge,ifa,imei,modifytime from dg_devicetoken where client_id=3 and modifytime<>" # 插入数据 hive -e "$query_c"

插入load本地数据文件

load data local inpath /opt/DATA/goldmine/src/an.log into table dh_cook_tag

删除

Hive 中,仅仅删除表是不够的,如果这个表是外部表,那么还需要删除HDFS中的文件

删除分区数据

query_d="ALTER TABLE dg_devicetoken_day DROP IF EXISTS PARTITION(p_day=${BEFORE_PARTITION})"

# 删除 Hive 表数据

hive -e "$query_d"

# 删除hdfs数据

hadoop fs -rm -r /user/hive/warehouse/dg/bigtables/dg_devicetoken_day/p_day=${BEFORE_PARTITION}

# 查看数据文件是否还存在

hadoop fs -ls -h /user/hive/warehouse/dg/bigtables/dg_devicetoken_day

删除整表数据

# 删除Hive表

DROP TABLE IF EXISTS dg_devicetoken_day # 删除HDFS数据文件 hadoop fs -rm -r /user/hive/warehouse/dg/bigtables/dg_devicetoken_day

建表操作 建立外部表 CREATE EXTERNAL TABLE dg_devicetoken_day ( id bigint, user_id bigint, device_token STRING, client_id int, badge int, ifa string, imei string, modifytime STRING ) PARTITIONED BY(p_day BIGINT) ROW FORMAT SERDE org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe STORED AS RCFILE LOCATION /user/hive/warehouse/dg/bigtables/dg_devicetoken_day; 建立临时表 临时表采用逗号 ‘,’ 分割 CREATE TABLE `dh_tmp_pt_data`( `id` string, `uid` string, `mobile` string, `client` string) row format delimited fields terminated by ,; 插入数据 查询表数据再插入 query_c=" INSERT OVERWRITE TABLE dg_devicetoken_day partition (p_day=${CUR_PARTITION}) select id,user_id,device_token,client_id,badge,ifa,imei,modifytime from dg_devicetoken where client_id=3 and modifytime<>" # 插入数据 hive -e "$query_c" 插入load本地数据文件 load data local inpath /opt/DATA/goldmine/src/an.log into table dh_cook_tag 删除 Hive 中,仅仅删除表是不够的,如果这个表是外部表,那么还需要删除HDFS中的文件 删除分区数据 query_d="ALTER TABLE dg_devicetoken_day DROP IF EXISTS PARTITION(p_day=${BEFORE_PARTITION})" # 删除 Hive 表数据 hive -e "$query_d" # 删除hdfs数据 hadoop fs -rm -r /user/hive/warehouse/dg/bigtables/dg_devicetoken_day/p_day=${BEFORE_PARTITION} # 查看数据文件是否还存在 hadoop fs -ls -h /user/hive/warehouse/dg/bigtables/dg_devicetoken_day 删除整表数据 # 删除Hive表 DROP TABLE IF EXISTS dg_devicetoken_day # 删除HDFS数据文件 hadoop fs -rm -r /user/hive/warehouse/dg/bigtables/dg_devicetoken_day
经验分享 程序员 微信小程序 职场和发展