DLI Beeline 简介
DLI Beeline是一个用于连接DLI服务的客户端命令行交互工具,该工具基于DLI JDBC实 现,提供SQL命令交互和批量SQL脚本执行的功能。
准备工作
在使用DLI Beeline前,需要进行如下操作:
1. 授权。
DLI使用统一身份认证服务(Identity and Access Management,简称IAM)进行 精细的企业级多租户管理。该服务提供用户身份认证、权限分配、访问控制等功 能,可以帮助您安全地控制华为云资源的访问。
通过IAM,您可以在华为云账号中给员工创建IAM用户,并使用策略来控制他们对 华为云资源的访问范围。
目前包括角色(粗粒度授权)和策略(细粒度授权)。具体的权限介绍和授权操 作请参考《数据湖探索用户指南》。
2. 创建队列。在“队列类型”中选择“SQL队列”,即SQL作业的计算资源。
DLI管理控制台中,创建队列的操作入口有三个,分别在“总览”页面、“SQL编 辑器”页面和“队列管理”页面。
– 单击总览页面右上角 进行创建队列。
– 在“队列管理”页面创建队列。
i. 在DLI管理控制台的左侧导航栏中,选择“队列管理”。
ii. 在“队列管理”页面右上角 进行创建队列。
– 在“SQL编辑器”页面创建队列。
i. 在DLI管理控制台的顶部菜单栏中,选择“SQL编辑器”。
ii. 在左侧导航栏的 页签,单击“队列”右侧的 创建队列。
说明
如果创建队列的用户不是管理员用户,在创建队列后,需要管理员用户赋权后才可使用。
关于赋权的具体操作请参考《数据湖探索用户指南》。
DLI 客户端工具下载
您可以在DLI管理控制台下载DLI客户端工具。
步骤1 登录DLI管理控制台。
步骤2 单击总览页右侧“常用链接”中的“SDK下载”。
步骤3 在“DLI SDK DOWNLOAD”页面,单击“huaweicloud-dli-clientkit-<version>”即 可下载DLI客户端工具。
说明
DLI客户端空间命名为“huaweicloud-dli-clientkit-<version>-bin.tar.gz”,支持在Linux环境中 使用,且依赖JDK 1.8及以上版本。
----结束
使用 DLI Beeline 连接服务端
使用DLI Beeline的机器安装JDK 1.8或以上版本并配置环境变量,推荐在Linux环境下 使用Beeline工具。
Welcome to DLI service ! beeline> !connect
Connecting from the default connection.properties
Connecting to jdbc:dli://dli.cn-north-1.myhuaweicloud.com/8fc20d97a4444cafba3c3a8639380003 Connected to: DLI service
jdbc:dli://dli.cn-north-1.myhuaweicloud... (not set)> show databases;
+---+
| databaseName | +---+
| bjhk |
| db_xd |
| dimensions_adgame |
| odbc_db |
10 rows selected (0.338 seconds)
用户也可以在启动beeline脚本时通过命令行选项设置连接参数,如下所示,如果连接 参数不全,Beeline会提示补全相关信息。
%bin/beeline -u 'jdbc:dli://dli.cn-north-1.myhuaweicloud.com/8fc20d97a4444cafba3c3a8639380003?
authenticationmode=aksk' Start Beeline
Connecting to jdbc:dli://dli.cn-north-1.myhuaweicloud.com/8fc20d97a4444cafba3c3a8639380003?
usehttpproxy=true;proxyhost=10.186.60.154;proxyport=3128;authenticationmode=aksk Enter region name: cn-north-1
Enter service name: DLI
Enter access key(AK): <real access key>
Enter secret key(SK): ****************************************
Enter queue name: default
Connected to: DLI service Welcome to DLI service !
jdbc:dli://dli.cn-north-1.myhuaweicloud... (not set)>
----结束
DLI Beeline 支持的命令
DLI Beeline支持一系列命令,每个命令以“!” 这个符号开始,例如“!connect”。具 体请参考表2-7。
表2-7 DLI Beeline 支持的命令
命令 描述
!connect 通过输入连接参数的方式连接到DLI服务,若不输入参数,则加载默认 的“connection.properties”文件连接。
!help 打印命令行的帮助文档。
!history 展示命令行执行历史。
!outputfor mat
设置查询结果的输出格式,支持
table,vertical,csv2,dsv,tsv2,xmlattr,xmlelements,每一种格式的具体说 明详参见查询输出格式。
!propertie s
通过加载“connection.properties”文件连接到DLI服务。该功能与!
connect相同,但是可以指定连接配置文件。
!quit 退出beeline会话。
!run 执行一个SQL脚本。使用方法:
!run <scriptfile>
!save 将当前的会话属性保存至beeline.properties中,下次开启beeline时会 自动加载这些属性。
!script 将执行的命令保存至一个文件中。例如:
!script /tmp/mysession.script
执行该语句之后,后续的命令将被保存至“/tmp/mysession.script”。
再次执行!script,结束脚本记录。执行如下语句,将会重新执行记录下 来的命令。
!run /tmp/mysession.script
!set 设置Beeline变量,例如:
!set color true
!set后面不接参数则显示所有变量值。
!sh 执行一个Shell脚本。例如:
!sh <shellscript>
命令 描述
!sql 显性地执行一条SQL语句,beeline中不带命令的语句默认会转换成!sql 命令,sql语句必须以分号结尾。例如:
!sql <sql>
!dliconf 查看DLI 自定义配置。
DLI Beeline 支持的命令行选项
DLI Beeline支持的启动命令行选项请参考表2-8。
表2-8 DLI Beeline 支持的启动命令行选项
命令行选项 描述
-u <database URL> 连接DLI JDBC的url,其中url需要采用单 引号括起来。使用方式:
beeline –u db_URL
-e <query> 需要执行的SQL语句,可以输入多条语 句,以分号间隔,语句需要采用单引号 括起来。
-f <file> 需要执行的脚本文件。
--dliconf property=value 待设置的DLI属性。
--property-file=<property-file> 通过指定的方式获取连接属性文件并连 接到DLI服务。
--help 打印命令行选项帮助。
查询输出格式
DLI Beeline支持多种查询结果输出格式,输出格式可以通过!outputformat指定。DLI Beeline支持的输出格式包括:table,vertical,csv2,dsv,tsv2,xmlattr,
xmlelements。
● table
table格式输出的结果以表的形式展示,例如:
!outputformat table
select id, value, comment from test_table;
+---+---+---+
| id | value | comment | +---+---+---+
| 1 | Value1 | Test comment 1 |
| 2 | Value2 | Test comment 2 |
| 3 | Value3 | Test comment 3 | +---+---+---+
● vertical
以行为单元组织数据,每一个属性以key-value的形式展示,例如:
!outputformat vertical
select id, value, comment from test_table;
id 1 value Value1
comment Test comment 1 id 2
value Value2
comment Test comment 2 id 3
value Value3
comment Test comment 3
● csv2
以纯文本形式存储表格数据(数字和文本),使用逗号(,)作为分隔符,例如:
!outputformat csv2
select id, value, comment from test_table;
id,value,comment 1,Value1,Test comment 1 2,Value2,Test comment 2 3,Value3,Test comment 3
● dsv
每一行储存一条记录, 每条记录的各个字段间以制表符作为分隔,例如:
!outputformat dsv
select id, value, comment from test_table;
id|value |comment 1 |Value1|Test comment 1 2 |Value2|Test comment 2 3 |Value3|Test comment 3
● tsv2
每一行储存一条记录, 每条记录的各个字段间以空格作为分隔,例如:
!outputformat tsv2
select id, value, comment from test_table;
id value comment 1 Value1Test comment 1 2 Value2Test comment 2 3 Value3Test comment 3
● xmlattr
用于在SQL查询返回的 XML 元素中设置属性的函数,例如:
!outputformat xmlattr
select id, value, comment from test_table;
<resultset>
<result id="1" value="Value1" comment="Test comment 1"/>
<result id="2" value="Value2" comment="Test comment 2"/>
<result id="3" value="Value3" comment="Test comment 3"/>
</resultset>
● xmlelements
将一个关系值转换为XML元素的函数,格式为<elementName>值</
elementName>,例如:
!outputformat xmlelements
select id, value, comment from test_table;
<resultset>
<result>
<id>1</id>
<value>Value1</value>
<comment>Test comment 1</comment>
</result>
<result>
<id>2</id>
<value>Value2</value>
<comment>Test comment 2</comment>
</result>
<result>
<id>3</id>
<value>Value3</value>
<comment>Test comment 3</comment>
</result>
</resultset>