本章节主要介绍如何通过数据湖分析(DLA)连接文件引擎并查询文件引擎上的数据。
数据湖分析(Data Lake Analytics,DLA)支持通过Serverless SQL的CU版和Serverless Spark访问文件引擎。
DLA Serverless Spark 方式访问文件引擎,请参见文档 Serverless Spark 访问 Hadoop。
DLA Serverless SQL 方式访问文件引擎操作如下:
准备工作
开通文件引擎,详情请参见 开通指南。
DLA Serverless SQL 目前仅支持通过CU版本访问文件引擎,请确保您已经开通了DLA Serverless SQL CU版本,详情请参见CU版本快速入门。
创建虚拟集群时,绑定的数据源网络必须和文件引擎在同一个VPC下面。
文件引擎设置访问白名单,将VPC的IP段添加白名单上面。
以下示例是一个简单的CSV文件,您可以在本地创建一个新的文本文件
example.txt
,在其中粘贴如下内容:7,8,9
然后执行如下命令将文件上传到文件引擎上。
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 访问不支持高可用方式,所以,通过该方式访问文件引擎时候,需要将上面的地址替换成文件引擎主名称节点的host,主备节点可以在hdfs-site配置找到,hdfs-site配置信息参见文档访问配置生成。
执行如下命令查看数据是否上传成功。
hadoop fs -ls hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1
执行结果如下,表示上传成功。
操作步骤
登录DLA控制台。
单击左侧导航栏的Serverless SQL>SQL执行。
单击同步执行来执行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/';
说明HDFS表的参数、表属性和OSS表大部分都是一样的。主要的区别如下:
由于网络连通性的问题,在创建库、表时不会对目录内容进行检查,用户需要自己保证目录的正确性。
基于同样的原因,HDFS表不支持auto.create.location属性。
查询或访问数据
由于只有CU的计算资源和文件引擎网络可以联通,因此所有访问文件引擎表的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) mysql> /*+ pool-selector=test-vc */ select * from p; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | 7 | 8 | 9 | 1 | +------+------+------+------+ 1 row in set (4.74 sec)
执行结果。
更多详细信息请参见常用SQL。
在文档使用中是否遇到以下问题
更多建议
匿名提交