本文介绍通过数据湖分析(DLA)连接LindormDFS的方法,并使用SQL查询LindormDFS中的数据。
前提条件
云原生多模数据库 Lindorm实例已开通LindormDFS,具体请参见开通指南。
将专有网络的IP添加至Lindorm实例的白名单中,具体请参见设置白名单。
已开通DLA Serverless SQL CU版本,具体请参见DLA Presto CU版本快速入门。
说明配置DLA虚拟集群的数据源网络时,数据源网络和Lindorm实例使用相同的专有网络ID。
访问方式
数据湖分析(Data Lake Analytics,简称DLA)支持通过DLA Serverless SQL和DLA Serverless Spark方式访问LindormDFS。
准备工作
在本地创建新的文本文件
example.txt
,文本内容示例如下:7,8,9
执行如下命令将文本文件上传至LindormDFS。
hadoop fs -mkdir -p hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1 hadoop fs -copyFromLocal example.txt hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1/example.txt
说明由于DLA Serverless SQL访问不支持高可用方式,所以通过该方式访问LindormDFS时,需要将上面的地址替换成LindormDFS主名称节点的host,主备节点可以在hdfs-site配置中查看,查看方法请参见访问配置生成。
执行如下命令查看数据是否上传成功。
hadoop fs -ls hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1
执行结果如下图表示上传成功。
操作步骤
登录DLA控制台。
在左侧导航栏,选择Serverless Presto>SQL执行。
在编辑框中输入以下SQL命令,并单击编辑框上方的同步执行。
CREATE DATABASE `my_lindorm_store_db` WITH DBPROPERTIES ( catalog = 'hive', location = 'hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/' )
说明您也可以通过MySQL客户端或者程序代码等方式连接DLA,然后执行SQL命令创建库。创建库语句的参数说明如下:
CATALOG:取值为hive,表示创建的是hive Schema。
LOCATION:库所在的目录。
执行以下创建表的命令。
USE `my_lindorm_store_db`; CREATE EXTERNAL TABLE p ( `a` int, `b` int, `c` int ) partitioned by (d int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS `TEXTFILE` LOCATION 'hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/';
说明LindormDFS表的参数、表属性和OSS表大部分都是一样的。主要的区别如下:
由于网络连通性的问题,在创建库、表时不会对目录内容进行检查,用户需要自己保证目录的正确性。
基于同样的原因,LindormDFS表不支持auto.create.location属性。
查询数据。由于只有CU的计算资源与LindormDFS网络可以连通,因此所有访问LindormDFS表的SQL语句都需要指定
hint: /*+pool-selector=your-vc-name*/
,指定后SQL语句会在CU中执行。/*+ pool-selector=test-vc */ alter table p add partition (d=1) location 'hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1'; Query OK, 0 rows affected (8.63 sec) /*+ pool-selector=test-vc */ select * from p; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | 7 | 8 | 9 | 1 | +------+------+------+------+ 1 row in set (4.74 sec)
执行结果如下图:
说明DLA中常用的SQL类型和语法,更多请参见常用SQL。