文档首页/ 数据湖探索 DLI/ 快速入门/ 使用DLI提交SQL作业查询OBS数据
更新时间:2024-09-27 GMT+08:00

使用DLI提交SQL作业查询OBS数据

场景描述

DLI可以查询存储在OBS中的数据,本节操作介绍使用DLI提交SQL作业查询OBS数据的操作步骤。

本例新建“sampledata.csv”文件上传OBS桶,并新建弹性资源池队列,使用DLI创建数据库和表,使用DLI提供的SQL编辑器查询表的1000条数据。

操作流程

使用DLI提交SQL作业查询OBS数据的基本流程如表1所示。

开始进行如下操作前,请务必参考准备工作完成必要操作。

表1 使用DLI提交SQL作业查询OBS数据的操作步骤

操作步骤

说明

步骤1:上传数据至OBS

使用DLI查询数据前,需要将数据文件上传至OBS中。

步骤2:创建弹性资源池并添加队列

创建提交作业所需的计算资源。

步骤3:创建数据库

DLI元数据是SQL作业开发的基础。在执行作业前您需要根据业务场景定义数据库和表。

步骤4:创建表

数据库创建完成后,需要在数据库db1中基于OBS上的样本数据创建表。

步骤5:查询数据

使用标准SQL语句进行数据的查询和分析。

准备工作

  • 已注册华为账号并开通华为云,且在使用DLI前检查账号状态,账号不能处于欠费或冻结状态。
  • 配置DLI委托访问授权
    DLI使用过程中涉及到OBS、VPC、SMN等服务交互,首次使用DLI需要用户配置委托授权,允许访问这些依赖服务。
    1. 使用华为云账号登录DLI管理控制台,在左侧导航栏单击“全局配置 > 服务授权”。
    2. 在委托设置页面,勾选基础使用、跨源场景、运维场景的委托权限后,单击“更新委托权限”。
    3. 查看并了解更新委托的提示信息,单击“确定”。完成DLI委托权限的更新。
      图1 配置DLI委托访问授权
    4. 完成配置后,在IAM控制台的委托列表中,可查看到dli_management_agency的委托信息。

步骤1:上传数据至OBS

使用DLI查询数据前,需要将数据文件上传至OBS中。

  1. 登录OBS管理控制台,进入OBS管理控制台页面。
  2. 创建桶,本例桶名以“obs1”为例。
    1. 单击页面右上角“创建桶”
    2. 进入“创建桶”页面,选择“区域”,输入“桶名称”。其他参数保持默认值或根据需要选择。

      创建OBS桶时,需要选择与DLI管理控制台相同的区域,不可跨区域执行操作。

    3. 单击“立即创建”。
  3. 单击所建桶“obs1”,进入“对象”页面。
  4. 勾选左侧列表中的“对象”,选择“上传对象”,将需要上传的文件“sampledata.csv”上传到指定目录,单击“上传”

    “sampledata.csv”样例文件可以通过新建“sampledata.txt”,复制如下英文逗号分隔的文本内容,再另存为“sampledata.csv”

    product_id,product_name
    113,office_13
    22,book_2
    29,book_9

    文件上传成功后,待分析的文件路径为“obs://obs1/sampledata.csv”

    关于OBS管理控制台更多操作请参考《对象存储服务用户指南》。

步骤2:创建弹性资源池并添加队列

本例创建弹性资源池“dli_resource_pool”、队列“dli_queue_01”。
  1. 登录DLI管理控制台。
  2. 在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
  3. 在弹性资源池管理界面,单击界面右上角的“购买弹性资源池”。
  4. 在“购买弹性资源池”界面,填写具体的弹性资源池参数。
  5. 本例在华东-上海二区域购买按需计费的弹性资源池。相关参数说明如表2所示。
    表2 参数说明

    参数名称

    参数说明

    配置样例

    区域

    选择弹性资源池所在区域。

    华东-上海二

    项目

    每个区域默认对应一个项目,由系统预置。

    系统默认项目

    名称

    弹性资源池名称。

    dli_resource_pool

    规格

    选择弹性资源池规格。

    标准版

    CU范围

    弹性资源池最大最小CU范围。

    64-64

    网段

    规划弹性资源池所属的网段。如需使用DLI增强型跨源,弹性资源池网段与数据源网段不能重合。弹性资源池网段设置后不支持更改

    172.16.0.0/19

    企业项目

    选择对应的企业项目。

    default

  6. 参数填写完成后,单击“立即购买”,在界面上确认当前配置是否正确。
  7. 单击“提交”完成弹性资源池的创建。
  8. 在弹性资源池的列表页,选择要操作的弹性资源池,单击操作列的“添加队列”。
  9. 配置队列的基础配置,具体参数信息如下。
    表3 弹性资源池添加队列基础配置

    参数名称

    参数说明

    配置样例

    名称

    弹性资源池添加的队列名称。

    dli_queue_01

    类型

    选择创建的队列类型。

    • 执行SQL作业请选择SQL队列。
    • 执行Flink或Spark作业请选择通用队列。

    _

    执行引擎

    SQL队列可以选择队列引擎为Spark或者Trino。

    _

    企业项目

    选择对应的企业项目。

    default

  10. 单击“下一步”,配置队列的扩缩容策略。

    单击“新增”,可以添加不同优先级、时间段、“最小CU”和“最大CU”扩缩容策略。

    本例配置的扩缩容策略如图2所示。
    图2 添加队列时配置扩缩容策略
    表4 扩缩容策略参数说明

    参数名称

    参数说明

    配置样例

    优先级

    当前弹性资源池中的优先级数字越大表示优先级越高。本例设置一条扩缩容策略,默认优先级为1。

    1

    时间段

    首条扩缩容策略是默认策略,不能删除和修改时间段配置。

    即设置00-24点的扩缩容策略。

    00-24

    最小CU

    设置扩缩容策略支持的最小CU数。

    16

    最大CU

    当前扩缩容策略支持的最大CU数。

    64

  11. 单击“确定”完成添加队列配置。

步骤3:创建数据库

在进行数据查询之前还需要创建一个数据库,例如db1。

“default”为内置数据库,不能创建名为“default”的数据库。

  1. 在DLI管理控制台,单击左侧导航栏中的“SQL编辑器”,可进入SQL作业“数据库”页面。
  2. 在“SQL编辑器”页面右侧的编辑窗口中,输入如下SQL语句,单击“执行”。阅读并同意隐私协议,单击“确定”。
    create database db1;

    数据库创建成功后,左侧单击“ ”刷新数据库页面,新建的数据库db1会在“数据库”列表中出现。

    在DLI管理控制台第一次单击“执行”操作时,需要阅读隐私协议,确认同意后才能执行作业,且后续“执行”操作将不会再提示阅读隐私协议。

步骤4:创建表

数据库创建完成后,需要在数据库db1中基于OBS上的样本数据“obs://obs1/sampledata.csv”创建一个表,例如table1。

  1. “SQL编辑器”页面右侧的编辑窗口上方,选择队列“default”和数据库“db1”。
  2. 在编辑窗口中,输入如下SQL语句,单击“执行”。
    create table table1 (product_id int, product_name string) using csv options (path 'obs://obs1');

    创建表时只需指定数据文件所在的OBS存储路径,目录后不需要指定文件名。

    表table1创建成功后,单击左侧“数据库”页签,再单击db1,新创建的表table1会在“表”区域下方显示。

步骤5:查询数据

完成以上步骤后,就可以开始进行数据查询了。

  1. 单击“SQL编辑器”页面左侧的“数据库”页签,选择新创建的表table1,双击表,在右侧编辑窗口中,自动输入SQL查询语句,例如查询table1表的1000条数据:
    select * from db1.table1 limit 1000;
  2. 单击“执行”,系统开始查询。

    SQL语句执行成功/失败后,可在SQL作业编辑窗口下方“查看结果”页签查看查询结果。