您的位置:首页 > 其它

Hive 表增删改查CRUD操作

2017-09-27 13:55 190 查看

建表操作

建立外部表

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: