Hive 表创建

适用模块

hive
自助分析
离线开发

具体说明

1Hive 内部表:
Hive 默认创建数据表为内部表,存储格式为 textfile,字段分隔符为\0001,路径为 db 路径下与表名同名 hdfs 路径;内部表在删除表时,表内数据会同步删除;如误操作删除表数据,短时间内可从回收站中恢复,但表元数据信息无法恢复
2Hive 外部表: 
Hive 创建外部表时需添加关键字 external,其他与内部表一致;外部表在进行删除操作时,仅会删除该表元数据信息,数据文件仍然保存在 hdfs 上;

使用示例

1HIVE内部表:
create table if not exists xf.demo_table
(
id int comment '编码',
name string comment '名称'
)
partitioned by (month string,day string)
comment '表注释'
row format
SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' --配置文件解析SerDe,常用Serde包含:lazy.LazySimpleSerDe-解析文本文件,ParquetHiveSerDe-解析parquet文件,OpenCSVSerde-解析csv文件
delimited fields terminated by ','              --配置字段分隔符,用户可自定义其他分割符,用希望使用的分隔符替代其中的','即可
stored as textfile                              --配置默认存储格式,常见存储格式有textfileparquet
location '/user/poc/hivesrc/xf.db/demo_table'   --配置该表的数据文件存储 HDFS 路径
with tblproperties('lifecycle'='30d','SYNC_METASTORE'='on')           --配置该表参数如生命周期等,lifecycle=30d表是该表生命周期为30天,目前仅支持以天为单位设置生命周期,从创建时间开始计算超出30天即被删除,'SYNC_METASTORE'='on'表是启用该表自动同步元数据至impala
2hive外部表:
create external table if not exists xf.demo_table
(
id int comment '编码',
name string comment '名称'
)
partitioned by (month string,day string)
comment '表注释'
row format delimited
serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'   --配置文件解析SerDe
fields terminated by ','                        --配置字段分隔符
stored as textfile                              --配置默认存储格式
location '/user/poc/hivesrc/xf.db/demo_table'   --配置该表的 HDFS 路径
with tblproperties('lifecycle'='30d')           --配置该表参数如生命周期等
3、创建外部表demo
--创建外表CSV
create external table xf.external_csv_demo
(
id int comment 'id',
name string comment 'name'
)
row format
serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties("separatorChar"=",","quoteChar"="\"","escapeChar"="\\")
location '/user/poc/hivesrc/xf.db/csvdir'
tblproperties ("skip.header.line.count"="1")

--创建外表 Json(Hive 内置)
create external table xf.external_json_demo
(
id int comment 'id',
name string comment 'name'
)
row format
serde 'org.apache.hive.hcatalog.data.JsonSerDe'   --第三方Serde,需添加对应Jar包至Hive
location '/user/poc/hivesrc/xf.db/csvdir'

--创建外表加强 Json(需额外下载 Jar 包)
create external table xf.external_exjson_demo
(
id int comment 'id',
name string comment 'name'
)
row format
serde 'org.openx.data.jsonserde.JsonSerDe'
location '/user/poc/hivesrc/xf.db/csvdir'
4Udf 函数注册 

4.1、通过猛犸平台--数据管理–文件管理上传函数对应 jar   
4.2、在自助分析或用户 HQL 中进行临时 UDF函数注册

# com.demo.func_name为用户编写类全路径
# udf_func_name为用户在后续使用的函数名
# 在自助分析中需两个语句同时选中执行,如后续查询语句需使用该函数,则每次执行时,需将添加 jar 包,创建函数及查询语句一起选中执行;
# 自助分析为短连接,每次执行结束均重新创建 seesion
add jar hdfs:///user/rec/hzxujunpeng/info-udf-libs/log-udtf-1.0.1.jar;
create temporary function udf_func_name as 'com.demo.func_name'
5、自助分析使用参数  
set hivevar:a=1;
select * from demo.test where status < ${a}

作者:林帅