云原生数据湖分析(Data Lake Analytics,DLA)支持通过CU版访问用户自建的HiveMetastore。本文主要介绍如何通过DLA连接并查询HiveMetastore里存储在HDFS的数据。
前提条件
- DLA目前仅支持通过CU版访问HiveMetastore,请确保您已经开通了DLA CU版本,具体请参见DLA Presto CU版本快速入门。说明 创建虚拟集群时,绑定的数据源网络必须和HiveMetastore+HDFS集群在同一个VPC下面。
- 在HiveMetastore中已创建数据库和表,并插入数据。参考命令样例如下:
CREATE DATABASE testDb; CREATE EXTERNAL TABLE if not exists testDb.testTable( id int, name string); insert into testDb.testTable(id, name) values (1, "jack");
操作步骤
- 登录DLA控制台。
- 在左侧导航栏的Serverless Presto>SQL执行,单击登录DMS执行SQL,执行以下SQL命令创建数据库和创建表。说明 您也可以通过MySQL客户端或者程序代码等方式连接DLA,然后执行SQL命令创建库。
- 创建数据库。
CREATE DATABASE `dlaDb` WITH DBPROPERTIES ( catalog = 'customer_hive', database = 'testDb', location = '172.16.199.34:9083', vpc_id = 'xxx', hdfs_properties = 'fs.defaultFS=hdfs://172.16.199.41:9000' )
参数名称 参数说明 catalog 表示创建的数据源是用户的HiveMetastore数据,固定为customer_hive。 database 指定需要访问的数据库为用户HiveMetastore的HiveServer中的库名。 location 指定需要访问的连接点为用户HiveMetastore的HiveServer地址。 vpc_id 指定需要访问的HiveMetastore所在的vpc。 hdfs_properties 指定需要访问的HiveMetastore中默认的hdfs配置。包括以下两种形式: - 非HA的HDFS,示例如下:
//这里的hdfs的配置为自建HDFS的地址,需要指定为IP或域名,不能为hostname。 hdfs_properties='fs.defaultFS=hdfs://172.16.199.41:9000'
- HA的HDFS,,示例如下:
//这里的hdfs的配置为自建HA HDFS的配置,需要指定为IP或域名,不能为hostname。 hdfs_properties='fs.defaultFS=hdfs://emr-cluster;dfs.nameservices=emr-cluster;dfs.client.failover.proxy.provider.emr-cluster=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider;dfs.ha.namenodes.emr-cluster=nn1,nn2;dfs.nameservice.id=emr-cluster;dfs.namenode.rpc-address.emr-cluster.nn1=172.16.199.34:8020;dfs.namenode.rpc-address.emr-cluster.nn2=172.16.199.35:8020'
- 非HA的HDFS,示例如下:
- 创建表。
- 通过create table来创建表。
CREATE EXTERNAL TABLE if not exists dlaDb.testTable( id int, name string);
说明 表名testTable
需要和HiveMetastore中对应db的表名相同。 - 通过msck来创建表。
msck repair database dlaDb;
- 通过create table来创建表。
- 创建数据库。
- 查询或访问数据。由于只有CU的计算资源和HiveMetastore网络可以联通,因此所有访问HiveMetastore表的SQL语句都需要指定
hint: /*+cluster=your-vc-name*/
,这样SQL才会在CU中执行。查询数据示例如下:mysql> /*+ cluster=vc-test */ select * from dlaDb.testTable; +------+------+ | id | name | +------+------+ | 1 | jack | +------+------+ 1 row in set (1.74 sec)