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