本篇主要讲的是HQL DDL语言。
DDL数据定义语言主要是针对表的。其重要程度直接关系到表和文件能否映射成功。
主要讲以下几点。
1.建表语句-表存在忽略异常。
--第一次建表
create table t(
id int,
name string,
age int
);
--当再次执行建表语句时就会报错
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. AlreadyExistsException(message:Table t already exists) (state=08S01,code=1)
--如果建表时加上 if not exists则会忽略异常。
2.建表语句数据类型。
- hive除了支持SQL数据类型外还支持java数据类型。
- 除了支持基础数据类型外还支持复合数据类型(array数组和map映射)。
- 在建表时表的字段类型和文件的类型要保持一致,如果不一致,hive会尝试隐式转换,如果转换失败则会显示null。
3.建表时分割符指定语法。
语法格式:
ROW FORMAT DELIMITED | SERDE
ROW FORMAT DELIMITED 表示使用LazySimpleSerDe类进行序列化解析数据
ROW FORMAT SERDE 表示使用其他SerDe类进行序列化解析数据
ROW FORMAT DELIMITED具体的子语法。
row format delimited
[fields terminated by char] #指定字段之间的分隔符
[collection items terminated by char] #指定集合元素之间的分隔符
[map keys terminated by char] #指定map类型kv之间的分隔符
[lines terminated by char] #指定换行符
例如:
create table t(
id int,
name string,
win_rate int,
skin_price map<string,int>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':';
本文详细介绍了Hive的数据定义语言(DDL),包括如何使用建表语句,如使用`IF NOT EXISTS`避免重复创建表的异常。还讨论了Hive支持的数据类型,包括基础类型和复合类型,并强调了数据类型与文件格式的一致性。此外,文章讲解了建表时指定分割符的语法,如`FIELD TERMINATED BY`、`COLLECTION ITEMS TERMINATED BY`等,以确保数据正确解析。
868

被折叠的 条评论
为什么被折叠?



