hive 创建 s3 外表

背景

有个比较大的技术侧需求: 将数据从 HDFS 迁移到 s3。当然在真正迁移之前,还需要验证迁移到 s3 的数据,和上层查询器(hive、presto 之间的兼容性)

这里我们对一张业务表的数据做个简单的迁移测试

验证

数据迁移

为了让 hdfs 指令能直接操作 s3 的数据,参考 Using DistCp with Amazon S3

先在 hdfs-site 中添加配置 fs.s3a.access.key 、 fs.s3a.secret.key 、 fs.s3a.endpoint 和 fs.s3a.connection.ssl.enabled 四个配置

复制代码
fs.s3a.access.key=s3_key
fs.s3a.secret.key=s3_secret
fs.s3a.endpoint=s3服务端地址
fs.s3a.connection.ssl.enabled=false(因为公司内部 s3 服务没开 ssl)

重启 hdfs 使得配置生效后,通过 distcp 将 hdfs 数据搬到 s3

复制代码
hadoop distcp hdfs://emr/data/db_name/table_name s3a://bucket_name/data/db_name/table_name

如上,我们尽量保证了迁移后数据的路径和原路径保持一致

通过 s3cmd 确认数据是否搬过来了:

复制代码
s3cmd ls s3://bucket_name/data/db_name/table_name/

查询验证

新建 hive 外表并指向 s3 路径:

(注意:s3 路径一定要正确,否则建表和查询数据都不会报错,但查出的数据为空)

复制代码
CREATE EXTERNAL TABLE `db_name`.`table_name`(
  `id` bigint COMMENT '',
  ...)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION
  's3a://bucket_name/data/db_name/table_name';

其他配置

1、ranger 权限配置

在 ranger 上集成 hive 插件后,从 hive 权限首页能看到将包含 url、库表、hiveservice 和 udf 四项权限配置。需要在 'url' 配置中添加用户权限

2、presto、trino 配置

访问 s3 数据需要额外加上以下配置:

复制代码
hive.s3.aws-access-key=s3_key
hive.s3.aws-secret-key=s3_secret
hive.s3.endpoint=s3服务端地址
hive.s3.ssl.enabled=false
相关推荐
哥本哈士奇9 小时前
数据仓库笔记 第六篇:PSA 层 SCD2 处理方式
数据仓库
曹牧12 小时前
Java Web 开发:servlet-mapping‌
java·数据仓库·hive·hadoop
juniperhan12 小时前
Flink 系列第20篇:Flink SQL 语法全解:从 DDL 到 DML,窗口、聚合、列转行一网打尽
大数据·数据仓库·分布式·sql·flink
菜鸟小码1 天前
HDFS 数据块(Block)机制深度解析:从原理到实战
大数据·hadoop·hdfs
早睡早起早日毕业1 天前
大数据管理与应用系列丛书《大数据平台架构》之第4章 Hadoop 分布式文件系统 (HDFS)
大数据·hadoop·架构
哥本哈士奇2 天前
数据仓库笔记 第五篇:Data Mart 层(数据集市)
数据仓库
juniperhan2 天前
Flink 系列第18篇:Flink 动态表、连续查询与 Changelog 机制
java·大数据·数据仓库·分布式·flink
juniperhan2 天前
Flink 系列第19篇:深入理解 Flink SQL 的时间语义与时区处理:从原理到实战
java·大数据·数据仓库·分布式·sql·flink
早睡早起早日毕业2 天前
大数据管理与应用系列丛书《大数据平台架构》之第2章 分布式理论基础:大数据系统的架构基石
大数据·hadoop·分布式·架构
菜鸟小码2 天前
HDFS 常用命令大全:从入门到生产实战
大数据·hadoop·hdfs