• 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)
    
    • 1
    • 2
    • 3
    • 4

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

    hadoop distcp hdfs://emr/data/db_name/table_name s3a://bucket_name/data/db_name/table_name
    
    • 1

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

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

    s3cmd ls s3://bucket_name/data/db_name/table_name/
    
    • 1

    查询验证

    新建 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其他配置

    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
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    17条卢松松近期言论汇总
    海思3559开发常识储备:相关名词全解
    xml开发方式下AutowiredAnnotationBeanPostProcessor的注册时机
    MPEG 解封装
    WPF开发经验-实现自带触控键盘的TextBox
    网络/Network - 传输层 - UDP
    华为OD面试分享13(2024年)
    pytorch入门,deep-learning-for-image-processing-master的test3-vggnet
    智能家居涉及到的12个物联网传感器!
    openai/CLIP 代码样例报告
  • 原文地址:https://blog.csdn.net/xiaoliizi/article/details/132985118