Beeline 的进阶使用
目录
- 1 Beeline 简介
- 2 Beeline 使用样例
- 3 Beeline 命令参数说明
- 3.1 Beeline 命令项
- 3.2 Beeline 命令
- 3.3 Beeline Hive 命令
- 4 Beeline 输出格式
- 4.1 table
- 4.2 vertical
- 4.3 xmlattr
- 4.4 xmlelements
- 4.5 csv2、tsv2、dsv
- 4.6 csv2、tsv2 和 dsv 格式中的引号
- 4.7 csv、tsv
- 5 Beeline 链接 Hive
- 5.1 测试数据
- 5.2 方式一:交互式
- 5.3 方式二:执行 sql 语句
- 5.4 方式三:sql 脚本
- 5.5 关于脚本的后台执行
- 6 Beeline 链接 Impala
- 6.1 分析系统环境的 beeline 脚本
- 6.2 导入 Impala 驱动包
- 6.3 mpala-shell 方式执行 sql
- 6.4 通过 beeline 执行 Impala sql 语句
- 6.5 通过 beeline 执行 Impala sql 脚本
- 7 Beeline 链接 Mysql
- 8 SQLLine
- 8.1 安装
- 8.2 进入 CLI
- 8.3 执行 SQL
1 Beeline 简介
2 Beeline 使用样例
$ bin/beeline
Beeline version 2.1.1-cdh6.3.2 by Apache Hivebeeline> !connect jdbc:hive2://cdh3:10000/default
Connecting to jdbc:hive2://cdh3:10000/default
Enter username for jdbc:hive2://cdh3:10000/default:
Enter password for jdbc:hive2://cdh3:10000/default:
Connected to: Apache Hive (version 2.1.1-cdh6.3.2)
Driver: Hive JDBC (version 2.1.1-cdh6.3.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ0: jdbc:hive2://cdh3:10000/default> show tables;
+-------------------+
| tab_name |
+-------------------+
| primitives |
| src |
| src1 |
| src_json |
| src_sequencefile |
| src_thrift |
| srcbucket |
| srcbucket2 |
| srcpart |
+-------------------+
9 rows selected (1.079 seconds)
我们还可以直接在系统的 shell 下直接输入如下命令进入 Beeline
$ beeline -u jdbc:hive2://cdh3:10000/default -n scott -w password_file# 如果需要通过 NoSASL 模式进行连接的 Beeline ,则必须明确指定身份验证模式:
$ beeline -u jdbc:hive2://<host>:<port>/<db>;auth=noSasl -n scott -p pass
3 Beeline 命令参数说明
3.1 Beeline 命令项
命令 | 描述 |
---|---|
-u <database URL>
|
要连接的 JDBC URL,如果需要参数值中的特殊字符应使用 URL 编码进行编码。 用法: beeline -u db_URL
|
r
|
重新连接到上次使用的URL(如果用户以前使用 !connect 到 URL,并且使用 !save 到 beeline.properties 文件)。用法: beeline -r 版本:: 2.1.0 (HIVE-13670) |
-n <username>
|
连接的用户名。 用法: beeline -n valid_user
|
-p <password>
|
连接的密码。 用法: beeline -p valid_password 可选的 password 模式。从Hive 2.2.0(HIVE-13589)开始, -p 选项的参数是可选的。用法: beeline -p [valid_password] 如果未提供密码,则 -p Beeline 将在启动连接时提示您输入密码,当提供密码时,Beeline使用它来启动连接并且不提示。
|
-d <driver class>
|
要使用的驱动程序类。 用法: beeline -d driver_class
|
-e <query>
|
应该执行的查询,双引号或单引号引起来的查询字符串,可以多次指定此选项。 用法: beeline -e "query_string" 支持在单个 query_string 中运行多个用分号分隔的 SQL 语句:1.2.0(HIVE-9877) 错误修复(空指针异常):0.13.0(HIVE-5765) 错误修复(不支持 --headerInterval ):0.14.0(HIVE-7647)错误修复(在后台运行 -e ):1.3.0 和 2.0.0(HIVE-6758);早期版本可用的解决方法
|
-f <file>
|
应执行的脚本文件。 用法: beeline -f filepath 版本:0.12.0 (HIVE-4268) 注意:如果脚本包含 tab 符,则查询编译在版本0.12.0中会失败,此错误已在版本0.13.0(HIVE-6359)中修复。错误修复(在后台运行 -f ):1.3.0和2.0.0(HIVE-6758);早期版本可用的解决方法
|
-i (or) --init <file or files>
|
用于初始化的 init 文件 用法: beeline -i /tmp/initfile 单文件。版本: 0.14.0 (HIVE-6561) 多文件文件。版本: 2.1.0 (HIVE-11336 |
-w (or) --password-file <password file>
|
从保存密码的文件中读取密码 版本:1.2.0 (HIVE-7175) |
-a (or) --authType <auth type>
|
身份验证类型作为 auth 属性传递给 jdbc 版本:0.13.0 (HIVE-5155) |
--property-file <file>
|
从中读取配置属性的文件 用法: beeline --property-file /tmp/a 版本:2.2.0 (HIVE-13964) |
--hiveconf property=value
|
给定配置属性的使用值。hive.conf.restricted.list 中列出的属性无法使用 hiveconf 重置(请参阅限制列表和白名单)。用法: beeline --hiveconf prop1=value1 版本:0.13.0 (HIVE-6173) |
--hivevar name=value
|
配置单元变量名称和值,这是特定于 Hive 的设置,其中可以在会话级别设置变量,并在Hive命令或查询中引用。 用法: beeline --hivevar var1=value1
|
--color=[true/false]
|
控制是否使用颜色进行显示。默认为false。 用法: beeline --color=true (不支持分数值输出格式。请参阅 HIVE-9770) |
--showHeader=[true/false]
|
在查询结果中显示列名(true)或者(false),默认为 true。 用法: beeline --showHeader=false
|
--headerInterval=ROWS
|
当 outputformat 为表时,重新显示列标题的间隔(以行数为单位),默认值为100。 用法: beeline --headerInterval=50 (不支持分数值输出格式。请参阅 HIVE-9770) |
--fastConnect=[true/false]
|
连接时跳过为 HiveQL 语句的制表符完成而建立所有表和列的列表(true)或建立list(false),默认为true。 用法: beeline --fastConnect=false
|
--autoCommit=[true/false]
|
启用/禁用 自动事务提交。默认为false。 用法: beeline --autoCommit=true
|
--verbose=[true/false]
|
显示详细的错误消息和调试信息(true)或不显示(false),默认为false。 用法: beeline --verbose=true
|
--showWarnings=[true/false]
|
显示发出任何 HiveQL 命令后在连接上报告的警告,默认为false。 用法: beeline --showWarnings=true
|
--showDbInPrompt=[true/false]
|
在提示中显示当前数据库名称(例如(库名)> ),默认为false。用法: beeline --showDbInPrompt=true 版本: 2.2.0 (HIVE-14123) |
--showNestedErrs=[true/false]
|
显示嵌套错误,默认为false。 用法: beeline --showNestedErrs=true
|
--numberFormat=[pattern]
|
使用 DecimalFormat 模式格式化数字。 用法: beeline --numberFormat="#,###,##0.00"
|
--force=[true/false]
|
脚本出现错误是否继续运行,默认为false。 用法: beeline--force=true
|
--maxWidth=MAXWIDTH
|
当 outputformat 是 table 时,在截取数据之前显示的最大宽度(以字符为单位),默认是查询终端当前宽度,然后回落到 80。 用法: beeline --maxWidth=150
|
--maxColumnWidth=MAXCOLWIDTH
|
当 outputformat 为 table 时,最大列宽(以字符为单位)。在Hive 2.2.0+版本(请参阅 HIVE-14135)中,默认值为50;在较早版本中,默认值为15。 用法: beeline --maxColumnWidth=25
|
--silent=[true/false]
|
是否减少显示的信息消息的数量。它还停止显示来自 HiveServer2(Hive 0.14和更高版本)和 HiveQL 命令(Hive 1.2.0和更高版本)的查询日志消息。默认为false。 用法: beeline --silent=true
|
--autosave=[true/false]
|
自动保存首选项(true)或不自动保存(false),默认为false。 用法: beeline --autosave=true
|
--outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2]
|
结果显示的格式化模式,默认为表格。有关建议的sv选项的说明,请参见下面的分隔值输出格式。 用法: beeline --outputformat=tsv 版本:dsv/csv2/tsv2 added in 0.14.0 (HIVE-8615) |
--truncateTable=[true/false]
|
如果为true,则超过控制台长度时会在控制台中截断表格列。 版本:0.14.0 (HIVE-6928) |
--delimiterForDSV= DELIMITER
|
定界符分隔值的分隔符输出格式。默认值为 ‘|’ 字符。 版本:0.14.0 (HIVE-7390) |
--isolation=LEVEL
|
将事务隔离级别设置为 TRANSACTION_READ_COMMITTED 或者 TRANSACTION_SERIALIZABLE。请参阅Java Connection文档中的 “字段详细信息” 部分。 用法: beeline --isolation=TRANSACTION_SERIALIZABLE
|
--nullemptystring=[true/false]
|
使用将 null 打印为空字符串(true)的历史行为,或使用将 null 打印为 NULL(false)的当前行为,默认为false。 用法: beeline --nullemptystring=false 版本: 0.13.0 (HIVE-4485) |
--incremental=[true/false]
|
从 Hive 2.3 起默认为true,之前默认为false。 如果设置为false,则在显示结果之前先提取并缓冲整个结果集,从而获得最佳的显示列大小。设置为true时,结果行将在提取时立即显示,从而以较低的显示列填充为代价,降低了等待时间和内存使用量。 如果在客户端遇到 OutOfMemory,则建议设置 --incremental=true (由于获取的结果集的大小太大)。
|
--incrementalBufferRows=NUMROWS
|
在 stdout 上打印行时要缓冲的行数,默认为1000;默认值为1000,仅在 --incremental=true 和 --outputformat=table 时适用用法: beeline --incrementalBufferRows=1000 版本: 2.3.0 (HIVE-14170) |
--maxHistoryRows=NUMROWS
|
Beeline 存储历史记录的最大行数。 版本:2.3.0 (HIVE-15166) |
--delimiter=;
|
设置用 Beeline 编写的查询的分割符,允许使用多字符定界符,但不允许使用引号、斜杠,并且 -- 是默认的。用法: beeline --delimiter=$$ 版本:3.0.0 (HIVE-10865) |
--convertBinaryArrayToString=[true/false]
|
将二进制列数据显示为字符串或字节数组。 用法: beeline --convertBinaryArrayToString=true 版本:3.0.0 (HIVE-14786) |
--help
|
显示用法信息。 用法: beeline --help
|
3.2 Beeline 命令
命令 | 描述 |
---|---|
!<SQLLine command>
|
SQLLine 命令列表可从 http://sqlline.sourceforge.net/ 获得。 示例: !quit 退出 Beeline 客户端。
|
!delimiter
|
设置用 Beeline 编写的查询的分隔符。允许使用多字符分隔符,但不允许使用引号、斜杠,并且-- 符为默认的;用法: !delimiter $$ 版本:3.0.0 (HIVE-10865) |
3.3 Beeline Hive 命令
默认以 ;
作为命令的终止符,脚本的注释可以使用 --
前缀指定。
命令 | 描述 |
---|---|
reset
|
将配置重置为默认值。 |
reset <key>
|
将指定配置变量(key)的值重置为默认值。注意:如果是拼写错误的变量名,Beeline 将不会提示错误。 |
set <key>=<value>
|
设置特定配置变量(key)的值。注意:如果是拼写错误的变量名,Beeline 将不会提示错误。 |
set
|
打印由用户或 Hive 覆盖的变量列表 |
set -v
|
打印所有 Hadoop 和 Hive 配置变量 |
①add FILE[S] <filepath> <filepath>* ② add JAR[S] <filepath> <filepath>* ③ add ARCHIVE[S] <filepath> <filepath>*
|
将一个或多个文件、jar 或存档(archives)添加到分布式缓存中的资源列表。有关更多信息请参见Hive资源。 |
①add FILE[S] <ivyurl> <ivyurl>* ② add JAR[S] <ivyurl> <ivyurl>* ③ add ARCHIVE[S] <ivyurl> <ivyurl>*
|
从Hive 1.2.0开始,使用格式为 ivy://group:module:version?query_string 的ivy URL将一个或多个文件、jar或存档添加到分布式缓存中的资源列表中。有关更多信息请参见Hive资源。
|
①list FILE[S] list JAR[S] ② list ARCHIVE[S]
|
列出已经添加到分布式缓存的资源。有关更多信息请参见Hive资源。(自Hive 0.14.0起:HIVE-7592)。 |
①list FILE[S] <filepath>* ② list JAR[S] <filepath>* ③list ARCHIVE[S] <filepath>*
|
检查给定资源是否已经添加到分布式缓存中。有关更多信息请参见Hive资源。 |
①delete FILE[S] <filepath>* ② delete JAR[S] <filepath>* ③ delete ARCHIVE[S] <filepath>*
|
从分布式缓存中删除资源。 |
①delete FILE[S] <ivyurl> <ivyurl>* ② delete JAR[S] <ivyurl> <ivyurl>* ③ delete ARCHIVE[S] <ivyurl> <ivyurl>*
|
从 Hive 1.2.0 开始,从分布式缓存中删除使用<ivyurl> 添加的资源。有关更多信息,有关更多信息请参见Hive资源。
|
reload
|
从Hive 0.14.0开始,使 HiveServer2 获知配置参数hive.reloadable.aux.jars.path 指定的路径中的任何jar变化(无需重新启动 HiveServer2)。所做的更改可以是添加、删除或更新jar文件。 |
dfs <dfs command>
|
执行dfs命令。 |
<query string>
|
执行 Hive 查询并将结果打印到标准输出。 |
4 Beeline 输出格式
在Beeline中,结果可以以不同的格式显示。可以使用 outputformat 选项设置格式模式。支持以下输出格式:
4.1 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 |
+-----+---------+-----------------+
4.2 vertical
-- 查询结果
> select id, value, comment from test_table;
id 1
value Value1
comment Test comment 1id 2
value Value2
comment Test comment 2id 3
value Value3
comment Test comment 3
4.3 xmlattr
结果以 XML 格式显示,其中每一行都是XML中的“结果”元素。 在“结果”元素上,将行的值显示为属性,属性的名称是列的名称。例:
-- 查询结果
> 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>
4.4 xmlelements
结果以 XML 格式显示,其中每一行都是XML中的“结果”元素。行的值显示为结果元素的子元素。例:
-- 查询结果
> 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>
4.5 csv2、tsv2、dsv
对于 dsv 格式,可以使用 delimiterForDSV 选项设置分隔符。 默认分隔符为 ‘|’。请注意,仅支持单个字符定界符。例:
-- 查询结果
> select id, value, comment from test_table;-- csv2
id,value,comment
1,Value1,Test comment 1
2,Value2,Test comment 2
3,Value3,Test comment 3-- tsv2
id value comment
1 Value1 Test comment 1
2 Value2 Test comment 2
3 Value3 Test comment 3-- dsv (分隔符是 |)
id|value|comment
1|Value1|Test comment 1
2|Value2|Test comment 2
3|Value3|Test comment 3
4.6 csv2、tsv2 和 dsv 格式中的引号
如果未禁用引号,则如果值包含特殊字符(例如分隔符或双引号字符)或跨多行,则在值周围添加双引号。 嵌入的双引号与前面的双引号一起转义。
-- 查询结果
> select id, value, comment from test_table;-- csv2 中 引号可用时
id,value,comment
1,"Value,1",Value contains comma
2,"Value""2",Value contains double quote
3,Value'3,Value contains single quote-- csv2中 引号禁用时
id,value,comment
1,Value,1,Value contains comma
2,Value"2,Value contains double quote
3,Value'3,Value contains single quote
4.7 csv、tsv
- 这两种格式的区别仅在于值之间的分隔符,对于csv是逗号,对于tsv是制表符。
- 即使使用
disable.quoting.for.sv
系统变量禁用了引号,这些值也始终用单引号字符引起来。 - 这些输出格式不会转义嵌入的单引号。
- 请注意,不建议使用这些输出格式,仅保留它们是为了向后兼容。
-- 查询结果
> select id, value, comment from test_table;-- csv
'id','value','comment'
'1','Value1','Test comment 1'
'2','Value2','Test comment 2'
'3','Value3','Test comment 3'--tsv
'id' 'value' 'comment'
'1' 'Value1' 'Test comment 1'
'2' 'Value2' 'Test comment 2'
'3' 'Value3' 'Test comment 3'
5 Beeline 链接 Hive
使用这种方式可以远程连接 Hive,只要环境中已经有可用的 beeline,主要远程访问 hive.server2.thrift.port
配置项的值,默认为 10000。
当然除了使用 Beeline 连接 Hive,还可以通过其它方式连接 Hive。连接 Hive 的方式主要有如下几种,下面我们主要以 Beeline 为例进行介绍。
5.1 测试数据
-- 1 查看表
0: jdbc:hive2://cdh3:10000 (default)> desc tmp_test;
OK
id int
name string -- 2 插入 3 条数据
0: jdbc:hive2://cdh3:10000 (default)> insert into tmp_test values(1, "a"),(2, "b"), (3, "c");
5.2 方式一:交互式
# 参数说明
# -n username,连接 Hive 的用户名(如果未开启权限认证可以不写)
# -p password, 连接 Hive 的用户的密码(如果未开启权限认证可以不写)
# -d driver class, 连接 Hive 的 驱动类(无特殊情况下,可以选填)
# -u database url, 必填,连接 Hive 的 URL
# --color=true 彩色显示
# --showDbInPrompt=true 在命令前面显示数据库的名称
# --isolation 设置事物的隔离级别,<TRANSACTION_NONE | TRANSACTION_READ_COMMITTED | TRANSACTION_READ_UNCOMMITTED | TRANSACTION_REPEATABLE_READ | TRANSACTION_SERIALIZABLE>
# --incremental=false 使输出的结果更加美观,但输出结果的速度会慢,2.3 之后默认为 true
beeline -n hive -p hive -d "org.apache.hive.jdbc.HiveDriver" -u "jdbc:hive2://cdh3:10000/hive_test" \
--color=true --showDbInPrompt=true --isolation=TRANSACTION_SERIALIZABLE --incremental=false
0: jdbc:hive2://cdh3:10000 (hive_test)> SELECT * FROM tmp_test;
+--------------+----------------+
| tmp_test.id | tmp_test.name |
+--------------+----------------+
| 1 | a |
| 2 | b |
| 3 | c |
+--------------+----------------+
3 rows selected (0.474 seconds)
5.3 方式二:执行 sql 语句
# 参数说明如下
# --hiveconf 格式为 property=value , 设置 Hive 属性值
# --hivevar 格式为 name=value,配置会话级别的变量名和值,例如 --hivevar hive.security.authorization.enabled=false
# -e query, 执行的 查询语句
# --help 查看帮助
beeline -n hive -p hive -d "org.apache.hive.jdbc.HiveDriver" -u "jdbc:hive2://cdh3:10000/default" \
--hiveconf mapreduce.job.queuename=datacenter --color=true \
-e "select count(*) from hive_test.tmp_test"# 结果如下
+------+
| _c0 |
+------+
| 3 |
+------+
1 row selected (34.441 seconds)
5.4 方式三:sql 脚本
在 sql 脚本的目录下有 my-hive.sql 文件,文件中有如下 SQL
SELECT m.id,m.movie_name,m.rating_num,m.rating_people,q.rank,q.quote FROM movie m LEFT JOIN quote q ON q.id=m.id ORDER BY m.rating_num DESC,m.rating_people DESC LIMIT 10;
use hive_test;
select count(*) from tmp_test;
# 参数说明:
# -f 执行的脚本文件
beeline -n hive -p hive -d "org.apache.hive.jdbc.HiveDriver" -u "jdbc:hive2://cdh3:10000/default" --color=true \
--hiveconf mapreduce.job.queuename=datacenter \
-f ./my-hive.sql
0: jdbc:hive2://cdh3:10000/default> SELECT m.id,m.movie_name,m.rating_num,m.rating_people,q.rank,q.quote FROM movie m LEFT JOIN quote q ON q.id=m.id ORDER BY m.rating_num DESC,m.rating_people DESC LIMIT 10;
+----------+------------------------------------------+---------------+------------------+---------+------------------+
| m.id | m.movie_name | m.rating_num | m.rating_people | q.rank | q.quote |
+----------+------------------------------------------+---------------+------------------+---------+------------------+
| 1292052 | 肖申克的救赎 The Shawshank Redemption (1994) | 9.7 | 1502851 | 1 | 希望让人自由。 |
| 1291546 | 霸王别姬 (1993) | 9.6 | 1112641 | 2 | 风华绝代。 |
| 1296141 | 控方证人 Witness for the Prosecution (1957) | 9.6 | 195362 | 29 | 比利·怀德满分作品。 |
| 1292063 | 美丽人生 La vita è bella (1997) | 9.5 | 690618 | 5 | 最美的谎言。 |
| 1295124 | 辛德勒的名单 Schindler's List (1993) | 9.5 | 613865 | 8 | 拯救一个人,就是拯救整个世界。 |
| 1295644 | 这个杀手不太冷 Léon (1994) | 9.4 | 1363430 | 3 | 怪蜀黍和小萝莉不得不说的故事。 |
| 1292720 | 阿甘正传 Forrest Gump (1994) | 9.4 | 1178003 | 4 | 一部美国近现代史。 |
| 1292722 | 泰坦尼克号 Titanic (1997) | 9.4 | 1119405 | 7 | 失去的才是永恒的。 |
| 1293182 | 十二怒汉 12 Angry Men (1957) | 9.4 | 253408 | 36 | 1957年的理想主义。 |
| 1291561 | 千与千寻 千と千尋の神隠し (2001) | 9.3 | 1205228 | 6 | 最好的宫崎骏,最好的久石让。 |
+----------+------------------------------------------+---------------+------------------+---------+------------------+
10 rows selected (50.576 seconds)
0: jdbc:hive2://cdh3:10000/default> use hive_test;
No rows affected (0.069 seconds)
0: jdbc:hive2://cdh3:10000/default> select count(*) from tmp_test;
+------+
| _c0 |
+------+
| 3 |
+------+
1 row selected (34.686 seconds)
5.5 关于脚本的后台执行
nohup beeline -n hive -p hive -d "org.apache.hive.jdbc.HiveDriver" -u "jdbc:hive2://cdh3:10000/default" \
--hiveconf mapreduce.job.queuename=datacenter --silent=true --showHeader=true --outputformat=csv2 \
-e "desc hive_test.tmp_test" \
</dev/null >> /tmp/output.log 2>> /tmp/error.log &nohup beeline -n hive -p hive -d "org.apache.hive.jdbc.HiveDriver" -u "jdbc:hive2://cdh3:10000/default" \
--hiveconf mapreduce.job.queuename=datacenter --silent=true --showHeader=true --outputformat=dsv \
-f ./my-hive.sql \
</dev/null >> /tmp/output.log 2>> /tmp/error.log &
上面的第一个命令时查看 tmp_test
结构,以 csv2 格式输出到 结果文件。第二个命令时执行 sql 脚本,输出格式为可配置的 dsv 格式(默认分隔符为 |
),执行完毕后两个后台进程自动结束,查看结果文件如下:
col_name,data_type,comment
id,int,
name,string,
m.id|m.movie_name|m.rating_num|m.rating_people|q.rank|q.quote
1292052|肖申克的救赎 The Shawshank Redemption (1994)|9.7|1502851|1|希望让人自由。
1291546|霸王别姬 (1993)|9.6|1112641|2|风华绝代。
1296141|控方证人 Witness for the Prosecution (1957)|9.6|195362|29|比利·怀德满分作品。
1292063|美丽人生 La vita è bella (1997)|9.5|690618|5|最美的谎言。
1295124|辛德勒的名单 Schindler's List (1993)|9.5|613865|8|拯救一个人,就是拯救整个世界。
1295644|这个杀手不太冷 Léon (1994)|9.4|1363430|3|怪蜀黍和小萝莉不得不说的故事。
1292720|阿甘正传 Forrest Gump (1994)|9.4|1178003|4|一部美国近现代史。
1292722|泰坦尼克号 Titanic (1997)|9.4|1119405|7|失去的才是永恒的。
1293182|十二怒汉 12 Angry Men (1957)|9.4|253408|36|1957年的理想主义。
1291561|千与千寻 千と千尋の神隠し (2001)|9.3|1205228|6|最好的宫崎骏,最好的久石让。
_c0
3
6 Beeline 链接 Impala
6.1 分析系统环境的 beeline 脚本
这里以 CDH 环境为例,我们在 Beeline 环境下输入如下命令查看 beeline 信息,
# 1 查看系统环境下的 beeline 的路径
bogon:~ yoreyuan$ which beeline
/usr/bin/beeline# 2 查看文件信息,发现这个是一个软连接,指向了 /etc/alternatives 下
bogon:~ yoreyuan$ ll -h /usr/bin/beeline
lrwxrwxrwx 1 root root 25 Dec 19 02:01 /usr/bin/beeline -> /etc/alternatives/beeline# 3 我们再次查看 /etc/alternatives/beeline 文件,我们发现它依然是一个软连接
bogon:~ yoreyuan$ ll /etc/alternatives/beeline
lrwxrwxrwx 1 root root 65 Dec 19 02:01 /etc/alternatives/beeline -> /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/bin/beeline# 4 再次跟踪查看上面的文件。OK,这次是一个文件了
bogon:~ yoreyuan$ ll /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/bin/beeline
-rwxr-xr-x 1 root root 771 Nov 9 00:09 /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/bin/beeline# 5 查看 beeline 脚本文件
bogon:~ yoreyuan$ vim /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/bin/beeline
#!/bin/bash# Reference: http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-inSOURCE="${BASH_SOURCE[0]}"BIN_DIR="$( dirname "$SOURCE" )"while [ -h "$SOURCE" ]doSOURCE="$(readlink "$SOURCE")"[[ $SOURCE != /* ]] && SOURCE="$BIN_DIR/$SOURCE"BIN_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"doneBIN_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"LIB_DIR=$BIN_DIR/../lib
# Autodetect JAVA_HOME if not defined
. $LIB_DIR/bigtop-utils/bigtop-detect-javahome
BIGTOP_DEFAULTS_DIR=${BIGTOP_DEFAULTS_DIR-$BIN_DIR/../etc/default}
[ -n "${BIGTOP_DEFAULTS_DIR}" -a -r ${BIGTOP_DEFAULTS_DIR}/hbase ] && . ${BIGTOP_DEFAULTS_DIR}/hbase
export HIVE_HOME=$LIB_DIR/hive
exec $LIB_DIR/hive/bin/beeline "$@"
因此我们再来查看 hive 下的 beeline 脚本:vim /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/bin/../lib/hive/bin/beeline
,脚本内容如下:
#!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.bin=`dirname "$0"`
bin=`cd "$bin"; pwd`# Set Hadoop User classpath to true so that httpclient jars are taken from
# hive lib instead of hadoop lib.
export HADOOP_USER_CLASSPATH_FIRST=true# If process is backgrounded, don't change terminal settings
if [[ ( ! $(ps -o stat= -p $$) =~ "+" ) && ! ( -p /dev/stdin ) && ( ! $(ps -o tty= -p $$) =~ "?" ) ]]; thenexport HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal"
fi. "$bin"/hive --service beeline "$@"
从上面的脚本内容我们可以看到最终执行的命令为 "$bin"/hive --service beeline "$@"
,其中 $bin
的值为 /opt/cloudera/parcels/CDH/lib/hive/bin
,也就是执行的是 hive 客户端脚本,只不过传入的参数为 --service beeline
,我们可以通过 hive --help
查看帮助信息:--service : 启动指定的 服务或组件,cli 是默认的
,这个可以通过查看 hive 脚本第 69 行到 75 行验证(可见hive脚本):
if [ "$SERVICE" = "" ] ; thenif [ "$HELP" = "_help" ] ; thenSERVICE="help"elseSERVICE="cli"fi
fi
我们进一步查看 hive 脚本大约在 146 行(可见hive脚本),可以看到 hive 脚本会将 ${HIVE_HOME}/auxlib/*.jar
下的 jar 包添加进来。
# adding jars from auxlib directory
for f in ${HIVE_HOME}/auxlib/*.jar; doif [[ ! -f $f ]]; thencontinue;fiif $cygwin; thenf=`cygpath -w "$f"`fiAUX_CLASSPATH=${AUX_CLASSPATH}:$fif [ "${AUX_PARAM}" == "" ]; thenAUX_PARAM=file://$felseAUX_PARAM=${AUX_PARAM},file://$f;fi
done
6.2 导入 Impala 驱动包
Connecting to jdbc:impala://cdh3:21050/impala_demo
com.cloudera.impala.jdbc41.Driver
com.cloudera.impala.jdbc41.Driver
No current connection
我们直接从官网下载 Impala 驱动包导入 上面的路径下即可(不用重启 Impala 也不用重启 Hive)。
# 1 下载驱动包
# 其它版本可以通过这个连接获取:
# https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-4.html
# https://repository.cloudera.com/artifactory/cloudera-repos/Impala/ImpalaJDBC42/
wget https://downloads.cloudera.com/connectors/impala_jdbc_2.5.41.1061.zip# 2 解压到某一个临时的文件夹下
mkdir impala_drive
unzip impala_jdbc_2.5.41.1061.zip -d ./impala_drive/
# 查看 ./impala_drive/2.5.41.1061\ GA/ 可以看到有两个版本的 JDBC 驱动压缩包
unzip ./impala_drive/2.5.41.1061\ GA/Cloudera_ImpalaJDBC41_2.5.41.zip -d ./impala_drive/# 3 拷贝第二步解压的两个 jar 包到指定目录(CDH 环境下)
cp ./impala_drive/ImpalaJDBC41.jar /opt/cloudera/parcels/CDH/lib/hive/auxlib/
cp ./impala_drive/TCLIServiceClient.jar /opt/cloudera/parcels/CDH/lib/hive/auxlib/# 4 如果下载的驱动包不再使用,可以删除
rm -rf impala_drive/
6.3 mpala-shell 方式执行 sql
# 1 执行 sql 语句
# 参数说明如下:
# -u 认证的用户,默认为 root
# -i 指定 Impala 的 IMPALAD 服务地址,默认为 localhost:21000,
# -f 执行的查询 脚本文件
impala-shell -u impala -i cdh3:21000 \
-q "use impala_demo; SELECT id,movie_name,rating_num,rating_people,release_date FROM movie ORDER BY release_date DESC LIMIT 5;" # 2 sql 脚本
# 2.1 my-impala.sql 中有如下 sql
use impala_demo;
SELECT id,movie_name,rating_num,rating_people,release_date FROM movie ORDER BY release_date DESC LIMIT 5;# 2.2 执行
impala-shell -u impala -i cdh3:21000 \
-f ./my-impala.sql
6.4 通过 beeline 执行 Impala sql 语句
# 执行 sql 语句
# 如果有错误提示 Error: [Simba][JDBC](11975) Unsupported transaction isolation level: 4. (state=HY000,code=11975)
# 可以加上参数:--isolation=default
beeline -n impala -d "com.cloudera.impala.jdbc41.Driver" -u "jdbc:impala://cdh3:21050/impala_demo" \
--isolation=default \
-e "SELECT id,movie_name,rating_num,rating_people,release_date FROM movie ORDER BY release_date DESC LIMIT 5;"
6.5 通过 beeline 执行 Impala sql 脚本
# sql 脚本
beeline -n impala -d "com.cloudera.impala.jdbc41.Driver" -u "jdbc:impala://cdh3:21050/impala_demo" \
--isolation=default \
-f ./my-impala.sql
7 Beeline 链接 Mysql
beeline -n scm -p 123456 -d "com.mysql.jdbc.Driver" \
-u "jdbc:mysql://cdh1:3306/flink_test?useUnicode=true&characterEncoding=utf8&useSSL=false" \
--color=true --isolation=TRANSACTION_SERIALIZABLE --incremental=false
Connecting to jdbc:mysql://cdh1:3306/flink_test?useUnicode=true&characterEncoding=utf8&useSSL=false
Connected to: MySQL (version 5.6.44-log)
Driver: MySQL Connector Java (version mysql-connector-java-5.1.42 ( Revision: 1f61b0b0270d9844b006572ba4e77f19c0f230d4 ))
Transaction isolation: TRANSACTION_SERIALIZABLE
Beeline version 2.1.1-cdh6.3.2 by Apache Hive
0: jdbc:mysql://cdh1:3306/flink_test> SHOW TABLES;
+-------------------------+
| Tables_in_flink_test |
+-------------------------+
| flower |
| …… 省略 |
+-------------------------+
23 rows selected (0.108 seconds)-- 执行 sql
0: jdbc:mysql://cdh1:3306/flink_test> SELECT * FROM flower LIMIT 3;
+-----+-------+-------+---------------------+------------+
| id | date | name | en_name | utterance |
+-----+-------+-------+---------------------+------------+
| 1 | 1月1日 | 雪莲花 | Snow Drop | 纯白的爱 |
| 2 | 1月2日 | 黄水仙 | Narcisus Jonquilla | 神秘 |
| 3 | 1月3日 | 藏红花 | Spring Crocus | 执著 |
+-----+-------+-------+---------------------+------------+
3 rows selected (0.25 seconds)
8 SQLLine
8.1 安装
# 1 创建安装目录
mkdir /opt/sqlline
cd /opt/sqlline
mkdir lib# 2 下载 SQLLine
wget https://jaist.dl.sourceforge.net/project/sqlline/sqlline/1.0.2/sqlline-1_0_2.jar# 3 下载 SQLLine 依赖的 jline
# 注意:jline版本不能高于 1.1.0,否则会报如下异常
# Caused by: java.lang.ClassNotFoundException: jline.Completor
wget https://repo1.maven.org/maven2/jline/jline/1.0/jline-1.0.jar -P lib/# 4 下载 MySQL 驱动
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.42/mysql-connector-java-5.1.42.jar -P lib/# 5 下载 Impala 驱动
wget https://downloads.cloudera.com/connectors/impala_jdbc_2.5.41.1061.zip -P lib/
unzip lib/impala_jdbc_2.5.41.1061.zip -d lib/
unzip lib/2.5.41.1061\ GA/Cloudera_ImpalaJDBC41_2.5.41.zip -d lib/
rm -rf lib/2.5.41.1061\ GA
rm -rf lib/*.pdf# 6 下载 Hive 驱动及其依赖
wget https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/1.1.1/hive-jdbc-1.1.1.jar
wget https://repo1.maven.org/maven2/org/apache/hive/hive-cli/1.1.0/hive-cli-1.1.0.jar
wget https://repo1.maven.org/maven2/org/apache/hive/hive-service/1.1.0/hive-service-1.1.0.jar
wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-common/2.7.7/hadoop-common-2.7.7.jar
wget https://repo1.maven.org/maven2/org/apache/hive/hive-common/1.0.0/hive-common-1.0.0.jar
wget https://repo1.maven.org/maven2/com/google/guava/guava/11.0.2/guava-11.0.2.jar
8.2 进入 CLI
# 1 查看帮助
java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/opt/sqlline/lib -jar /opt/sqlline/sqlline-1_0_2.jar --help
Usage: java sqlline.SqlLine-u <database url> the JDBC URL to connect to-n <username> the username to connect as-p <password> the password to connect as-d <driver class> the driver class to use--color=[true/false] control whether color is used for display--showHeader=[true/false] show column names in query results--headerInterval=ROWS; the interval between which heades are displayed--fastConnect=[true/false] skip building table/column list for tab-completion--autoCommit=[true/false] enable/disable automatic transaction commit--verbose=[true/false] show verbose error messages and debug info--showWarnings=[true/false] display connection warnings--force=[true/false] continue running script even after errors--maxWidth=MAXWIDTH the maximum width of the terminal--maxColumnWidth=MAXCOLWIDTH the maximum width to use when displaying columns--silent=[true/false] be more silent--autosave=[true/false] automatically save preferences--outputformat=[table/vertical/csv/tsv] format mode for result display--isolation=LEVEL set the transaction isolation level--help display this message# 2 连接 Hive
java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/opt/sqlline/lib -jar /opt/sqlline/sqlline-1_0_2.jar \
--color=true --autoCommit=false -d "org.apache.hive.jdbc.HiveDriver" \
-u "jdbc:hive2://cdh3:10000/default" -n hue -p hue123456# 3 连接 MySQL
java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/opt/sqlline/lib -jar /opt/sqlline/sqlline-1_0_2.jar \
--color=true -d "com.mysql.jdbc.Driver" -u "jdbc:mysql://localhost:3306/flink_test" -n scm -p 3UsaTx#bHR# 4 连接 Impala
java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/opt/sqlline/lib/ -jar /opt/sqlline/sqlline-1_0_2.jar \
--color=true --isolation=TRANSACTION_READ_UNCOMMITTED -d "com.cloudera.impala.jdbc41.Driver" \
-u "jdbc:impala://cdh3:21050/reportmart;UID=impala;AuthMech=3;SSL=0;PWD=cdhImpala_123" -n impala -p cdhImpala_123
8.3 执行 SQL
-- 1 进入 sqlline cli
-- java -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/opt/sqlline/lib -jar /opt/sqlline/sqlline-1_0_2.jar-- 2 查看帮助
sqlline> !help
!all Execute the specified SQL against all the current connections
!autocommit Set autocommit mode on or off
!batch Start or execute a batch of statements
!brief Set verbose mode off
!call Execute a callable statement
!close Close the current connection to the database
!closeall Close all current open connections
!columns List all the columns for the specified table
!commit Commit the current transaction (if autocommit is off)
!connect Open a new connection to the database.
!dbinfo Give metadata information about the database
!describe Describe a table
!dropall Drop all tables in the current database
!exportedkeys List all the exported keys for the specified table
!go Select the current connection
!help Print a summary of command usage
!history Display the command history
!importedkeys List all the imported keys for the specified table
!indexes List all the indexes for the specified table
!isolation Set the transaction isolation for this connection
!list List the current connections
!manual Display the SQLLine manual
!metadata Obtain metadata information
!nativesql Show the native SQL for the specified statement
!outputformat Set the output format for displaying results(table,vertical,csv,tsv,xmlattrs,xmlelements)
!primarykeys List all the primary keys for the specified table
!procedures List all the procedures
!properties Connect to the database specified in the properties file(s)
!quit Exits the program
!reconnect Reconnect to the database
!record Record all output to the specified file
!rehash Fetch table and column names for command completion
!rollback Roll back the current transaction (if autocommit is off)
!run Run a script from the specified file
!save Save the current variabes and aliases
!scan Scan for installed JDBC drivers
!script Start saving a script to a file
!set Set a sqlline variable
!sql Execute a SQL command
!tables List all the tables in the database
!typeinfo Display the type map for the current connection
!verbose Set verbose mode on-- 3 查看当前环境可使用 Driver
sqlline> !scan
scan complete in 457ms
8 driver classes found
Compliant Version Driver Class
no 2.5 com.cloudera.impala.jdbc41.Driver
no 5.1 com.mysql.fabric.jdbc.FabricMySQLDriver
no 5.1 com.mysql.jdbc.Driver
no 5.1 com.mysql.jdbc.NonRegisteringDriver
no 5.1 com.mysql.jdbc.NonRegisteringReplicationDriver
no 5.1 com.mysql.jdbc.ReplicationDriver
no 1.1 org.apache.hive.jdbc.HiveDriver
no 5.1 org.gjt.mm.mysql.Driver-- 4 执行脚本
!connect jdbc:hive2://cdh3:10000/default impala cdhImpala_123 "org.apache.hive.jdbc.HiveDriver"
!run /root/show_db.sql
Beeline 的进阶使用相关推荐
- Kerberos简介、安装及与其它服务的集成和使用
目录 1 简介 1.1 官方文档连接 1.2 A guided tour of Kerberos: Tutorial 2 安装 2.1 下载 2.2 KDC 节点的安装 2.2.1 安装 2.2.2 ...
- Hadoop基础教程-第12章 Hive:进阶(12.3 HiveServer2)(草稿)
第12章 Hive:进阶 12.3 HiveServer2 12.3.1 HiveServer1 HiveServer是一种可选服务,允许远程客户端可以使用各种编程语言向Hive提交请求并检索结果.H ...
- 进阶大数据架构师学习路线
![在这里插入图片描述](https://img-blog.csdnimg.cn/25b820fe1d054f53bab70310694faffe.jpeg#pic_center 文末有惊喜 大数据架 ...
- 正式压力测试:locust进阶,超简单搭建生产级locust集群
locust进阶,搭建生产级locust集群 本教程基于k8s集群搭建,使用helm作为包管理工具 通过helm安装locust
- 伍六七带你学算法 进阶篇-生命游戏
有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...
- NLP进阶之(七)膨胀卷积神经网络
NLP进阶之(七)膨胀卷积神经网络 1. Dilated Convolutions 膨胀卷积神经网络 1.2 动态理解 1.2.2 转置卷积动画 1.2.3 理解 2. Dilated Convolu ...
- js进阶 13-5 jquery队列动画如何实现
js进阶 13-5 jquery队列动画如何实现 一.总结 一句话总结:同一个jquery对象,直接写多个animate()就好. 1.什么是队列动画? 比如说先左再下,而不是左下一起走 2.怎么实现 ...
- 一个java高级工程师的进阶之路【转】
一个java高级工程师的进阶之路[转] 宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) ...
- SQL Server Extended Events 进阶 3:使用Extended Events UI
开始采用Extended Events 最大的阻碍之一是需要使用Xquery和XML知识用来分析数据.创建和运行会话可以用T-SQL完成,但是无论使用什么目标,数据都会被转换为XML.这个限制在SQL ...
最新文章
- 性能测试场景设计之用户模式设置
- 【基带传输】基于matlab的简易无线基带传输系统的仿真
- 众核多计算模式系统的构建 - 全文
- JDK 9 对字符串 String 的优化,挺有意思!
- 猛料来啦!Autodesk全线产品二次开发视频录像下载!!
- 知名投资机构董事总经理在培训中晕倒后去世,这个培训究竟是什么?
- SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
- 自学python买什么教材-学习Python的正确姿势—基础教学,教科书该怎么买?
- Go基础-核心特性和前景
- MyBatis sql查询字段问题
- 仿淘手游交易平台网站源码
- SQL数据库日志文件丢失,日志文件恢复的办法
- 信息学奥赛一本通(1097:画矩形)
- 次氯酸钠phP,次氯酸钠
- linux 内网网络波动检测,Linux内网测试环境模拟网络丢包和延时
- CATIA CAA二次开发专题(十)---迷宫中穿行(终结篇)
- 鼠标放在可以点击的文字上,变成小手样式
- 华为服务器L型滑道安装步骤讲解
- 组合逻辑电路的设计:竞争和险象
- Dubbo---升级Dubbo2.7.13依赖问题