修改hive默认格式

本文介绍了修改Hive默认格式的方法及测试是否生效的思路。通过设置'hive.default.fileformat.managed=rcfile'和'hive.default.fileformat=rcfile'两个参数,可将Hive默认格式变更为rcfile,还通过建表查看格式来测试修改是否生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

设置hive默认格式,作用,统一数据格式。


一、修改hive默认格式方法

设置默认格式为rcfile

hive (default)> set hive.default.fileformat.managed=rcfile;
hive (default)> set hive.default.fileformat=rcfile;

二、测试是否生效

思路: 修改格式前后建表,检查表的格式

  1. 建表,查看目前格式
hive (default)> create table t1(id int);
OK
Time taken: 1.255 seconds

2.查看表格式:

hive (default)> show create table t1;
OK
createtab_stmt
CREATE TABLE `t1`(
  `id` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://ns/user/hive/warehouse/t1'
TBLPROPERTIES (
  'transient_lastDdlTime'='1649216404')
Time taken: 0.128 seconds, Fetched: 12 row(s)

3.设置默认格式:

hive (default)> set hive.default.fileformat.managed=rcfile;
hive (default)> set hive.default.fileformat=rcfile;

4.建t2表测试,是否生效:

hive (default)> create table t2(id int);
OK
Time taken: 0.161 seconds
hive (default)> show create table t2;
OK
  1. 查看t2表格式:
createtab_stmt
CREATE TABLE `t2`(
  `id` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.RCFileInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
LOCATION
  'hdfs://ns/user/hive/warehouse/t2'
TBLPROPERTIES (
  'transient_lastDdlTime'='1649216435')
Time taken: 0.024 seconds, Fetched: 12 row(s)

总结

hive (default)> set hive.default.fileformat.managed=rcfile;
hive (default)> set hive.default.fileformat=rcfile;
通过设置这两个参数使得默认格式变更

### 如何在 Hive 中将表的数据导出到本地文件 在 Hive 中,可以使用 `INSERT` 语句结合 `LOCAL DIRECTORY` 将查询结果保存到本地文件系统中。以下是具体方法: #### 使用 `INSERT OVERWRITE LOCAL DIRECTORY` 可以通过以下命令将 Hive 表中的数据导出到本地目录: ```sql INSERT OVERWRITE LOCAL DIRECTORY '/local/path/to/directory' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE SELECT * FROM your_table_name; ``` 上述 SQL 命令的作用如下: - `/local/path/to/directory`: 指定要存储数据的本地路径。 - `ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'`: 定义字段分隔符和行结束符[^1]。 - `STORED AS TEXTFILE`: 明确指定输出文件格式为纯文本。 如果只需要部分列,则可以在 `SELECT` 子句中调整所需的列名列表。 #### 导出特定条件下的数据 当需要基于某些过滤条件来导出数据时,可以直接在 `SELECT` 查询中加入 `WHERE` 条件。例如: ```sql INSERT OVERWRITE LOCAL DIRECTORY '/local/path/to/filtered_data' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' SELECT column1, column2 FROM your_table_name WHERE year = '2018'; ``` 此操作会仅导出满足 `year = '2018'` 的记录,并将其写入本地文件夹 `/local/path/to/filtered_data` 下[^2]。 #### 注意事项 - 如果目标路径已存在相同名称的文件或目录,在执行该命令前应确认是否允许覆盖这些资源。 - 数据量较大时可能耗时较长,请耐心等待完成。 ```bash hdfs dfs -get /hive/data/location /desired/local/folder/ ``` 通过 HDFS CLI 工具也可以实现从分布式文件系统下载至本机硬盘的操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值