Hive文件格式及数据导入导出

4 篇文章 0 订阅
4 篇文章 0 订阅
Hive文件格式
  • TEXTFILE

    • 默认格式,数据不进行任何压缩
    • 存储方式:行存储
    • 磁盘开销大,数据解析开销大
    • Hive不会对其进行切分,无法对数据进行并行操作
  • SEQUENCEFILE

    • 二进制文件,以<key,value>形式序列化到文件中
    • 存储方式:行存储
    • 可分割、可压缩。支持三种压缩方式:NONE,RECORD,BLOCK。Record压缩率低,一般选择block压缩。
    • 文件和Hadoop API中的mapfile相互兼容
  • RCFILE

    • 存储方式:按行分块,每块按照列存储。保证同一个record在一个块上,避免读一个record需要读取多个block。其次,块数据列存储,有利于数据压缩和快速列存取
    • 压缩快,快速列存取
    • 读记录尽量控制block最少
    • 读取指定的列只需读取每个row group的头部定义
    • 读取全量数据时,性能可能对SEQUANCEFILE性能差
  • ORCFILE

    • 存储方式:按行分块,每块按照列存储
    • 压缩快,快速列存储
    • 效率比RC高,可以理解为RC的改进版
  • PARQUET

    • 类似于ORC
    • 通用性比ORC强,Hadoop生态系统中大部分工程都支持该文件格式
Hive数据导出
  • 本地文件导入到Hive表,需提前创建表
load data local inpath 
"/tmp/user/data/demo_local.parquet" 
into table db_tmp.demo_local;
  • HDFS文件导入到Hive表,需提前创建表
load data inpath 
"/tmp/user/data/demo_hdfs.parquet" 
into table db_tmp.demo_hdfs;
  • Hive表导入到Hive表
insert into table demo_hive 
select * from demo_hive_b;
  • 创建表时从其他Hive表导入
create table demo_a 
as select * from demo_hive_b;
  • 通过sqoop将mysql库导入到Hive表
-- 默认导入到default库
sqoop import --connect 
jdbc:mysql://10.168.225.1:3306/casedb  
--username root 
--password password 
--table demo --hive-import 
--create-hive-table -m 1

-- 指定导入的数据库
sqoop import --connect 
jdbc:mysql://10.168.225.1:3306/casedb  
--username root 
--password root --table demo 
--hive-import --create-hive-table 
--hive-table database.demo -m 1

Hive数据导入
  • 导出到本地
insert overwrite local directory 
"/home/hadoop/data/" 
row format dilimited 
fields terminated by "," 
select * from demo_hive_b;
  • 导出到HDFS
insert overwrite  directory 
"/home/hadoop/data/" 
row format dilimited 
fields terminated by "," 
select * from demo_hive_b;
  • Hive命令行导出
# Linux bash终端
# 重定向方式
hive -e "select * from demo_hive_b" >> 
/home/hadoop/data/demo_output.txt

# sql文件方式
echo "select * from demo_hive_b" > 
/home/hadoop/data/demo_output.sql
hive -f /home/hadoop/data/demo_output.sql >> 
/home/hadoop/data/demo_output.txt
-------更多精彩,可关注微信公众号:"data爱好者"------- ## 标题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值