HIVE ROW FORMAT 数据切分格式

本文详细介绍了HiveQL的DDL语法规则,包括创建、删除、修改数据库、表、视图等操作,以及如何使用ROWFORMAT指定数据切分格式。通过具体示例讲解了字段、数组、映射之间的不同分隔符用法。

转载资源:https://www.cnblogs.com/zkio/p/7283770.html

HiveQL DDL语法规则包括

  • CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX(创建 数据库/模式,表,视图,函数,索引)
  • DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX(删除 数据库/模式,表,视图,索引)
  • TRUNCATE TABLE(清空 表)
  • ALTER DATABASE/SCHEMA, TABLE, VIEW(修改 数据库/模式,表,视图)
  • MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)(MSCK修复表或ALTER TABLE恢复分区)
  • SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE(查看)
  • DESCRIBE DATABASE/SCHEMA, table_name, view_name(查看 数据库/模式描述信息)

创建表时需要指定数据切分格式,会用到ROW FORMAT关键字。下面是Hive官网关于ROW FORMAT的用法:

下面通过一个例子说明数据之间分隔符用法。比如有两条数据:

1,Lilei,book-tv-code,beijing:chaoyang-shanghai:pudong
2,Hanmeimei,book-Lilei-code,beijing:haidian-shanghai:huangpu

先看JAVA集合框架图,明确每个字段数据类型

再看数据格式,指定分隔符

每个字段之间由[ , ]分割----------FIELDS TERMINATED BY ','

第二个字段是Array形式,元素与元素之间由[ - ]分割----------COLLECTION ITEMS TERMINATED BY '-'

第三个字段是K-V形式,每组K-V对内部由[ : ]分割,每组K-V对之间由[ - ]分割----------MAP KEYS TERMINATED BY ':'

每条数据之间由换行符分割(默认[ \n ]),如果是其它分割方式(比如[ ; ])----------LINES TERMINATED BY ';'

完整建表语句

create table psn (
id int,
name string,
hobbies ARRAY <string>,
address MAP <string, string>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '-'
MAP KEYS TERMINATED BY ':'; 

~完~

### Hive创建表时指定存储格式和压缩格式Hive中,创建表时可以通过`STORED AS`关键字指定存储格式,并通过`TBLPROPERTIES`或`SET`命令设置压缩格式。以下是详细说明及示例语法。 #### 1. 指定存储格式 Hive支持多种存储格式,常见的列式存储格式包括ORC、Parquet等。这些格式通常具有较高的查询性能和压缩效率。创建表时,可以使用`STORED AS`关键字指定存储格式[^1]。 示例:创建一个使用ORC存储格式的表。 ```sql CREATE TABLE orc_table ( id INT, name STRING, age INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS ORC; ``` #### 2. 指定压缩格式 压缩格式的选择取决于具体的应用场景和数据特性。常用的压缩格式包括Snappy、Gzip、LZO等。可以通过以下两种方式指定压缩格式: - **方法一:通过`TBLPROPERTIES`指定压缩格式** 在创建表时,使用`TBLPROPERTIES`参数指定压缩方式[^3]。 示例:创建一个使用ORC存储格式并启用Snappy压缩的表。 ```sql CREATE TABLE orc_snappy_table ( id INT, name STRING, age INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY"); ``` - **方法二:通过`SET`命令全局设置压缩格式** 在执行插入操作前,可以通过`SET`命令配置压缩格式[^4]。 示例:全局设置Snappy压缩后插入数据。 ```sql SET hive.exec.compress.output=true; SET mapreduce.output.fileoutputformat.compress=true; SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec; INSERT INTO TABLE orc_snappy_table SELECT * FROM textfile_table; ``` #### 3. 常用配置总结 - 存储格式:推荐使用列式存储格式ORC或Parquet,适用于大数据分析场景。 - 压缩格式:推荐使用Snappy,因其压缩速度较快且兼容性较好[^4]。 #### 注意事项 - 某些压缩格式(如Gzip)不可切分,可能会影响MapReduce任务的并行度[^4]。 - 如果需要频繁修改压缩格式,可通过调整`TBLPROPERTIES`实现,而无需重建表。 ```sql -- 修改表的压缩属性 ALTER TABLE orc_table SET TBLPROPERTIES ("orc.compress"="ZLIB"); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值