Hive 是基于 Hadoop 的一个数据仓库工具,用来进行数据提取、转化、加载。本文介绍如何配置 Hive 服务来访问 CloudFS 中的数据。
在使用 Hive 服务访问大数据文件存储服务 CloudFS 前,确保您已经完成以下准备工作:
/user/hive/
目录中的数据已完成全量迁移。详细操作请参考迁移 Hadoop 文件系统数据至 CloudFS。说明
集群所有节点都要修改如下配置。
wget https://cloudfs.tos-cn-beijing.volces.com/sdk/prod/cloudfs-client-1.5.3.49.tar.gz
tar -zxvf cloudfs-client-1.5.3.49.tar.gz
将解压文件cloudfs-client/lib/cloudfs-sdk-1.5.3.49.jar
拷贝至集群/share/hadoop/hdfs
路径下。
cp {YOUR_DOWNLOAD_PATH}/cloudfs-client/lib/cloudfs-sdk-1.5.3.49.jar /opt/{Directory}/hadoop/share/hadoop/hdfs/
配置 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
是大数据文件存储的挂载点地址,将其替换为已创建文件存储系统的挂载地址即可。AKxxx
和SKxxx
分别为访问密钥ID和私有访问密钥,详细说明请参考密钥管理。您可以通过以下两种方法将 Hive 的表数据存储至 CloudFS:
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)。
验证是否存储成功。
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}替换为您的文件加载路径。
上传完成后,将返回下图内容。
3. 执行查询命令查询 Hive 表。
select C_NATIONKEY,count(*) from customer group by C_NATIONKEY;