You need to enable JavaScript to run this app.
导航
使用 Hive 访问 CloudFS 中的数据
最近更新时间:2024.10.12 12:06:35首次发布时间:2022.05.26 14:18:32

Hive 是基于 Hadoop 的一个数据仓库工具,用来进行数据提取、转化、加载。本文介绍如何配置 Hive 服务来访问 CloudFS 中的数据。

前提条件

在使用 Hive 服务访问大数据文件存储服务 CloudFS 前,确保您已经完成以下准备工作:

步骤一:配置 CloudFS 服务

说明

集群所有节点都要修改如下配置。

  1. 执行以下命令,下载1.5.3.43版本的CloudfsSDK包。
wget https://cloudfs.tos-cn-beijing.volces.com/sdk/prod/cloudfs-client-1.5.3.43.tar.gz
  1. 执行以下命令,解压CloudfsSDK包。
tar -zxvf cloudfs-client-1.5.3.43.tar.gz
  1. 将解压文件cloudfs-client/lib/cloudfs-sdk-1.5.3.43.jar拷贝至集群/share/hadoop/hdfs路径下。

    cp {YOUR_DOWNLOAD_PATH}/cloudfs-client/lib/cloudfs-sdk-1.5.3.43.jar /opt/{Directory}/hadoop/share/hadoop/hdfs/
    
  2. 配置 core-site.xml。

<property>
  <name>fs.defaultFS</name>
  <value>cfs://xxxx.cfs-cn-beijing.ivolces.com</value>
</property>
<property>
  <name>fs.cfs.impl</name>
  <value>com.volcengine.cloudfs.fs.CfsFileSystem</value>
</property>

<property>
  <name>fs.AbstractFileSystem.cfs.impl</name>
  <value>com.volcengine.cloudfs.fs.CFS</value>
</property>  

<property>
  <name>cfs.access.key</name>
  <value>AKxxxxxxxxxxx</value>
</property>
<property>
  <name>cfs.secret.key</name>
  <value>SKxxxxxxxxxxx</value>
</property>

<!-- 可选:如果使用的是 STS Token,需要填写 -->
<property>
  <name>cfs.security.token</name>
  <value>STSTokenxxxxxxxx</value>
</property>

<!-- 可选:如果开启缓存加速,需要配置缓存加速接入的 VPC 的网段 -->
<property>
  <name>cfs.client.network.segment</name>
  <value><VPC 网段,例如 192.168.0.0/16></value>
</property>

其中:

  • xxxx.cfs-cn-beijing.ivolces.com是大数据文件存储的挂载点地址,将其替换为已创建文件存储系统的挂载地址即可。
  • AKxxxSKxxx分别为访问密钥ID和私有访问密钥,详细说明请参考密钥管理
  1. 登录火山引擎 E-MapReduce 控制台。
  2. 在集群管理页面,找到需要挂载文件存储实例的目标 E-MapReduce 集群。
    1. 选择服务列表 > HDFS
    2. 在页面右侧的操作栏中,单击重启 > 重启全部组件,重启服务。

步骤二:使用 Hive 访问 CloudFS 数据

  1. 您可以通过以下两种方法将 Hive 的表数据存储至 CloudFS:

    • 修改 hive 默认存储位置。
      修改 hive-site 中的配置项 hive.metastore.warehouse.dir。例如配置成:cfs://{YOUR_ENDPOINT}/hive/store
    • 创建库/表/分区时指定存储路径。
    CREATE DATABASE database_name
    LOCATION 'cfs://{YOUR_ENDPOINT}/hive/store';
    
    CREATE [EXTERNAL] TABLE table_name
      [(col_name data_type,...)]
    LOCATION 'cfs://{YOUR_ENDPOINT}/hive/store';
    
    ALTER TABLE  table_name ADD PARTITION[(col_name data_type,...)] 
    LOCATION 'cfs://{YOUR_ENDPOINT}/hive/store';
    

    说明

    {YOUR_ENDPOINT}替换为您的文件存储 CFS 版挂载点域名(cfs://xxxx.cfs-cn-beijing.ivolces.com)。

  2. 验证是否存储成功。

    1. 创建 Hive 表。
      执行表查询命令查看返回结果:
      Image
    2. 将本地数据集加载至 Hive 表中。
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/region.tbl' INTO TABLE region;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/nation.tbl' INTO TABLE nation;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/part.tbl'   INTO TABLE part;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/supplier.tbl' INTO TABLE supplier;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/partsupp.tbl' INTO TABLE partsupp;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/customer.tbl' INTO TABLE customer;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/orders.tbl' INTO TABLE orders;
    LOAD DATA LOCAL INPATH '/{Directory}/tpch/lineitem.tbl' INTO TABLE lineitem;
    

    说明

    {Directory}替换为您的文件加载路径。

    上传完成后,将返回下图内容。
    Image
    3. 执行查询命令查询 Hive 表。

    select C_NATIONKEY,count(*) from customer group by C_NATIONKEY;
    

    Image