大数据BigData之hive怎么样才能够直接读取amazon s3中的.gz文件数据呢?

本文详细介绍了如何使用Hive从AmazonS3直接读取.gz压缩文件,包括数据准备、创建外部表和查询步骤,验证了Hive读取S3中gz文件的能力。

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

在看这篇文章之前,请确保以下几件事

  • 安装好 jdk
  • 安装好 hadoop (记得准备好需要用到的jar包)
  • 安装好 hive (记得配置元数据库、准备好需要用到的jar包)
  • 配置好 hadoop 连接 amazon s3 的文件
  • 配置好 hive 连接 amazon s3 的文件
  • 配置好 hive 与 hadoop 之间的连接

hive怎么样才能够直接读取amazon s3中的.gz文件数据呢?

我们分解一下这个问题,分成三个部分:

  1. hive 能不能读取 amazon s3 中的文件数据?
  2. hive 能不能读取 .gz 文件数据?
  3. hive 能不能读取在 amazon s3 中的 .gz 文件数据?


1. hive能不能读取amazon s3中的文件数据?

1.1 准备数据

提前准备好数据文件 a.txt,放在 s3a://bucket/test/ 目录下。

$ s3cmd put a.txt s3://bucket/test/

a.txt 的内容如下:

Edward,Lear,Baker Street 202
Stephen,Hawking,Baker Street 203
John,Dalton,Baker Street 204
Charles,Darwin,Baker Street 205
Sherlock,Holmes,Baker Street 221B

1.2 创建外部表

进入hive cli,并创建一张外部表,定位到 s3a://bucket/s3aTestBaker/ 目录

CREATE EXTERNAL TABLE test
(FirstName STRING, LastName STRING, StreetAddress STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3a://bucket/test/';

表会自动读取 s3a://bucketms/s3aTestBaker/ 目录下的文件(此目录下必须所有文件都是可读文件,不然下一步查询会报错:无法解析文件类型)

1.3 查询数据

可以实时把 s3a://bucketms/s3aTestBaker/ 目录下的文件数据通过创建好的外部表 select 出来

hive>select * from test;
Edward    Lear     Baker Street 202
Stephen   Hawking  Baker Street 203
John      Dalton   Baker Street 204
Charles   Darwin   Baker Street 205
Sherlock  Holmes   Baker Street 221B

2. hive能不能读取.gz文件数据?

尝试本地读取
将上述的 a.txt 文件压缩成 .gz 文件,本地操作

$ gzip a.txt
$ ls
a.txt    a.gz		//已经看到压缩成功了

这时,再创建一张本地表

CREATE TABLE test_local
(FirstName STRING, LastName STRING, StreetAddress STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/home/user/a.gz';

3. hive能不能读取在amazon s3中的.gz文件数据?

我们来尝试一下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值