全部产品

使用DLA访问

本章节主要介绍如何通过数据湖分析(DLA)连接文件引擎并查询文件引擎上的数据。

数据湖分析(Data Lake Analytics,DLA)支持通过Serverless SQL的CU版和Serverless Spark访问文件引擎。

DLA Serverless Spark 方式访问文件引擎,请参见文档 Serverless Spark 访问 Hadoop

DLA Serverless SQL 方式访问文件引擎操作如下:

准备工作

  1. 开通文件引擎,详情请参见 开通指南

  2. DLA Serverless SQL 目前仅支持通过CU版本访问文件引擎,请确保您已经开通了DLA Serverless SQL CU版本,详情请参见CU版本快速入门

  3. 创建虚拟集群时,绑定的数据源网络必须和文件引擎在同一个VPC下面。

  4. 文件引擎设置访问白名单,将VPC的IP段添加白名单上面。

    白名单

  5. 以下示例是一个简单的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配置信息参见文档访问配置生成

  6. 执行如下命令查看数据是否上传成功。

    hadoop fs -ls hdfs://${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1

    执行结果如下,表示上传成功。

    执行结果

操作步骤

  1. 登录DLA控制台

  2. 单击左侧导航栏的Serverless SQL>SQL执行

  3. 单击同步执行来执行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命令创建库。

    参数说明如下:

    1. CATALOG:取值为hive,表示创建的是hive Schema。

    2. LOCATION: 库所在的目录。

  4. 创建表

    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属性。

  5. 查询或访问数据

    由于只有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