Spark SQL----分布式SQL引擎

Spark SQL----分布式SQL引擎

  • 一、运行Thrift JDBC/ODBC服务器
  • 二、运行Spark SQL CLI
    • 2.1 Spark SQL命令行选项
    • 2.2 hiverc文件
    • 2.3 路径的说明
    • 2.4 支持的注释类型
    • 2.5 Spark SQL CLI交互式Shell命令
    • 2.6 例子

Spark SQL还可以使用JDBC/ODBC或命令行接口充当分布式查询引擎。在这种模式下,最终用户或应用程序可以直接与Spark SQL交互以运行SQL查询,而无需编写任何代码。

一、运行Thrift JDBC/ODBC服务器

这里实现的Thrift JDBC/ODBC服务器对应于内置Hive中的HiveServer2。你可以使用Spark或兼容的Hive附带的beeline脚本测试JDBC服务器。启动JDBC/ODBC服务,在Spark目录下执行如下命令:

./sbin/start-thriftserver.sh

此脚本接受所有bin/spark-submit命令行选项,以及指定Hive属性的–hiveconf选项。你可以执行./sbin/start-thriftserver.sh --help获取所有可用选项的完整列表。默认情况下,服务器在localhost:10000上侦听。你可以通过以下任一环境变量来覆盖此行为:

export HIVE_SERVER2_THRIFT_PORT=<listening-port>
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host>
./sbin/start-thriftserver.sh \--master <master-uri> \...

或者系统属性:

./sbin/start-thriftserver.sh \--hiveconf hive.server2.thrift.port=<listening-port> \--hiveconf hive.server2.thrift.bind.host=<listening-host> \--master <master-uri>...

现在你可以使用beeline测试Thrift JDBC/ODBC服务器:

./bin/beeline

在beeline中连接JDBC/ODBC服务器:

beeline> !connect jdbc:hive2://localhost:10000

Beeline会要求您输入用户名和密码。在非安全模式下,只需输入机器上的用户名和空白密码。对于安全模式,请遵循beeline文档中给出的说明。Hive的配置是通过将hive-site.xml, core-site.xml 和hdfs-site.xml文件放在conf/中完成的。你也可以使用Hive附带的beeline脚本。Thrift JDBC服务器还支持通过HTTP传输发送thrift RPC消息。使用以下设置将HTTP模式作为系统属性或在conf/中的hive-site.xml文件中启用:

hive.server2.transport.mode - Set this to value: http
hive.server2.thrift.http.port - HTTP port number to listen on; default is 10001
hive.server2.http.endpoint - HTTP endpoint; default is cliservice

要进行测试,使用beeline以http模式连接到JDBC/ODBC服务器:

beeline> !connect jdbc:hive2://<host>:<port>/<database>?hive.server2.transport.mode=http;hive.server2.thrift.http.path=<http_endpoint>

如果关闭会话并执行CTAS,则必须在hive-site.xml中将“fs.%s.impl.disable.cache”设置为true。请参阅[SPARK-21067]中的更多详细信息。

二、运行Spark SQL CLI

Spark SQL CLI是一个方便的交互式命令工具,用于运行Hive metastore服务和执行命令行输入的SQL查询。注意,Spark SQL CLI不能与Thrift JDBC服务器通信。启动Spark SQL命令行,在Spark目录下执行如下命令:

./bin/spark-sql

Hive的配置是通过将hive-site.xml, core-site.xml 和hdfs-site.xml文件放在conf/中完成的。

2.1 Spark SQL命令行选项

你可以运行./bin/spark-sql --help获取所有可用选项的完整列表。

CLI options:-d,--define <key=value>          Variable substitution to apply to Hivecommands. e.g. -d A=B or --define A=B--database <databasename>     Specify the database to use-e <quoted-query-string>         SQL from command line-f <filename>                    SQL from files-H,--help                        Print help information--hiveconf <property=value>   Use value for given property--hivevar <key=value>         Variable substitution to apply to Hivecommands. e.g. --hivevar A=B-i <filename>                    Initialization SQL file-S,--silent                      Silent mode in interactive shell-v,--verbose                     Verbose mode (echo executed SQL to theconsole)

2.2 hiverc文件

当不使用-i命令调用时,Spark SQL命令行将尝试加载$HIVE_HOME/bin/.hiverc和$HOME/.hiverc作为初始化文件。

2.3 路径的说明

Spark SQL CLI支持从初始化脚本文件(-i)或普通SQL文件(-f)运行SQL,如果路径url没有scheme组件,则将路径作为本地文件处理。例如: /path/to/spark-sql-cli.sql 等于 file:///path/to/spark-sql-cli.sql。用户也可以使用Hadoop支持的文件系统,如s3://<mys3bucket>/path/to/spark-sql-cli.sql 或者hdfs://<namenode>:<port>/path/to/spark-sql-cli.sql。

2.4 支持的注释类型

CommentExample
simple comment– This is a simple comment.
SELECT 1;
bracketed comment/* This is a bracketed comment. */
SELECT 1;
nested bracketed comment/* This is a /* nested bracketed comment*/ .*/
SELECT 1;

2.5 Spark SQL CLI交互式Shell命令

当不带-e或-f选项运行./bin/spark-sql时,它将进入交互式shell模式。使用;(分号)终止命令。注意:

  1. 仅当;位于行尾且未被\;转义时CLI使用;终止命令。
  2. ;是终止命令的唯一方法。如果用户输入SELECT 1并按enter键,控制台将等待输入。
  3. 如果用户在一行中输入多个命令,例如SELECT 1; SELECT 2;,命令SELECT 1和SELECT 2将分别执行。
  4. 如果;出现在SQL语句中(不是行尾),那么它没有特殊含义:
-- This is a ; comment
SELECT ';' as a;

这只是一个注释行,后面跟着一个返回字符串文字的SQL查询。

/* This is a comment contains ;
*/ SELECT 1;

但是,如果’;‘是行尾,则终止SQL语句。上面的示例将终止为/* This is a comment contains 和 / SELECT 1,Spark将分开提交这两个命令并抛出解析器错误(unclosed bracketed comment and Syntax error at or near '/’)。

CommandDescription
quit or exit退出交互式shell。
!<command>在Spark SQL CLI shell中执行shell命令。
dfs <HDFS dfs command>在Spark SQL CLI shell中执行HDFS dfs命令。
<query string>执行Spark SQL查询并将结果打印到标准输出。
source <filepath>在CLI中执行脚本文件。

2.6 例子

从命令行运行查询的示例:

./bin/spark-sql -e 'SELECT COL FROM TBL'

设置Hive配置变量示例:

./bin/spark-sql -e 'SELECT COL FROM TBL' --hiveconf hive.exec.scratchdir=/home/my/hive_scratch

设置Hive配置变量并在SQL查询中使用的示例:

./bin/spark-sql -e 'SELECT ${hiveconf:aaa}' --hiveconf aaa=bbb --hiveconf hive.exec.scratchdir=/home/my/hive_scratch
spark-sql> SELECT ${aaa};
bbb

设置Hive变量替换的示例:

./bin/spark-sql --hivevar aaa=bbb --define ccc=ddd
spark-sql> SELECT ${aaa}, ${ccc};
bbb ddd

使用静默模式从查询中将数据转储到文件的示例:

./bin/spark-sql -S -e 'SELECT COL FROM TBL' > result.txt

以非交互方式运行脚本的示例:

./bin/spark-sql -f /path/to/spark-sql-script.sql

在进入交互模式之前运行初始化脚本的示例:

./bin/spark-sql -i /path/to/spark-sql-init.sql

进入交互模式的例子:

./bin/spark-sql
spark-sql> SELECT 1;
1
spark-sql> -- This is a simple comment.
spark-sql> SELECT 1;
1

通过escape ;注释进入交互模式的例子:

./bin/spark-sql
spark-sql>/* This is a comment contains \\;> It won't be terminated by \\; */> SELECT 1;
1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql8一键安装脚本(linux) 拿走即用

创建一个shell文件,将下面的代码放里面去,然后放到linux服务器上运行就可以了 #!/bin/bash#---------------------* # * # 2021-10-08 * # install mysql-8 * # * #---------------------*route=/usr #包存放路径 mys…

掌握 Vue 组件通信:打造高效、灵活的前端应用

一、引言 Vue.js&#xff0c;作为现代前端开发的热门框架&#xff0c;以其组件化架构引领了开发效率与代码维护性的新标准。组件通信&#xff0c;作为这一架构中的关键环节&#xff0c;对于构建响应式、可扩展的应用至关重要。本文将探讨 Vue 组件通信的多种策略&#xff0c;旨…

c++习题04-忙碌的工人

目录 一&#xff0c;问题 二&#xff0c;思路 1&#xff0c;图形 2&#xff0c;分析 3&#xff0c;伪代码 三&#xff0c;代码 一&#xff0c;问题 二&#xff0c;思路 1&#xff0c;图形 根据题目&#xff0c;绘制出来的图形如下&#x1f447; 之后再绘制甲经过楼梯…

【数据结构】--栈

&#x1f44c;个人主页: 起名字真南 &#x1f923;个人专栏:【数据结构初阶】 【C语言】 目录 1 栈1.1 栈的概念和结构1.2 栈的实现1.2.1 头文件1.2.2 初始化1.2.3 销毁1.2.4 打印所有元素1.2.5 入栈1.2.6 出栈1.2.7 获取栈顶数据1.2.8 判空1.2.9 获取元素个数 1 栈 1.1 栈的概…

spring mvc实现一个自定义Formatter请求参数格式化

使用场景 在Spring Boot应用中&#xff0c;Formatter接口用于自定义数据的格式化&#xff0c;比如将日期对象格式化为字符串&#xff0c;或者将字符串解析回日期对象。这在处理HTTP请求和响应时特别有用&#xff0c;尤其是在展示给用户或从用户接收特定格式的数据时。下面通过…

四、golang基础之defer

文章目录 一、定义二、作用三、结果四、recover错误拦截 一、定义 defer语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。 二、作用 释放占用的资源捕捉处理异常输出日志 三、结果 如果一个函数中有多个defer语句&#xff0c;它们会以LIFO…

昇思MindSpore学习入门-函数式自动微分

函数式自动微分 神经网络的训练主要使用反向传播算法&#xff0c;模型预测值&#xff08;logits&#xff09;与正确标签&#xff08;label&#xff09;送入损失函数&#xff08;loss function&#xff09;获得loss&#xff0c;然后进行反向传播计算&#xff0c;求得梯度&#…

[单机版]新天龙八部之14门派绝情谷版|Win一键端+GM工具

前言 今天给大家带来一款单机游戏的架设&#xff1a;新天龙八部之14门派绝情谷版一键端紫色穿刺 无字谱&#xff0c;金陵天外。 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; [单机版]新天龙八部之…

数据结构-分析期末选择题考点(广义表)

莫道桑榆晚 为霞尚满天 数据结构-图期末选择题 数据结构-串、数组选择题 数据结构-排序选择题 数据结构-线性表、栈、队列、二叉树合集 契子✨ 广义表&#xff1a; <1>考点一&#xff1a;基本概念 广义表的基础概念 &#xff08;1&#xff09;什么是广义表 广义表&#…

google编码规范

7. 命名约定 — Google 开源项目风格指南

分词算法的基本原理及应用

分词算法的基本原理及应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨分词算法&#xff0c;这是自然语言处理领域中非常重要的技术之一&…

Hadoop 部署

1 准备工作 准备好集群环境 详情参考博客&#xff1a;集群初始配置。安装 Java 输入javac可查看安装提示信息。使用命令sudo apt install openjdk-8-jdk-headless安装JDK配置环境变量。使用sudo vim /etc/profile打开profile文件&#xff0c;输入以下内容&#xff0c;保存并退…

53、基于竞争层的竞争学习(matlab)

1、基于竞争层的竞争学习简介及原理 竞争学习是一种无监督学习方法&#xff0c;其中的竞争层神经元之间互相竞争以学习输入模式的表示。竞争学习的一个经典模型是竞争神经网络&#xff08;Competitive Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;其核心部分是…

Docker使用daocloud镜像加速

之前给大家分享的阿里云的镜像加速&#xff0c;今天再给大家分享一个还可以使用的镜像加速地址daocloud。 经过测试速度还是比较快的。 [rootbogon ~]# cat /etc/docker/daemon.json {"registry-mirrors": ["https://docker.m.daocloud.io"] }[rootbogon…

运营商、银行、国企等单位开发岗24届Offer薪资与福利汇总

本文介绍24届校园招聘中&#xff0c;地理信息科学&#xff08;GIS&#xff09;专业硕士研究生所得Offer的整体薪资情况、福利待遇等。 在2024届秋招与春招中&#xff0c;我累计投递了170余个单位&#xff0c;获得17个Offer&#xff1b;平均每投递10个简历才能获得1个Offer。说句…

flink-触发器Trigger和移除器Evictor

窗口原理与机制 图片链接&#xff1a;https://blog.csdn.net/qq_35590459/article/details/132177154 数据流进入算子前&#xff0c;被提交给WindowAssigner&#xff0c;决定元素被放到哪个或哪些窗口&#xff0c;同时可能会创建新窗口或者合并旧的窗口。每一个窗口都拥有一个…

Pc端多功能视频混剪工具/便携版打开即用

PC便携版 视频批量剪辑大师&#xff0c;全自动剪辑神器&#xff0c;会打字就能做视频 多功能&#xff0c;视频混剪&#xff0c;视频配音&#xff0c;文字生成语音&#xff0c;图片合成视频&#xff0c;自动识别音频并生成字幕等功能 链接&#xff1a;https://pan.baidu.com/…

递归算法~快速排序、归并排序

递归排序是一种基于分治法的排序算法&#xff0c;最典型的例子就是快速排序和归并排序。这两种算法都利用递归将问题分解成更小的子问题&#xff0c;然后将子问题的解合并以得到原始问题的解。 1、快速排序&#xff08;Quick Sort&#xff09; 快速排序的基本思想是选择一个基…

文件操作与管理

程序经常需要访问文件和目录&#xff0c;读取文件信息或写入文件信息&#xff0c;在Python语言中对文件的读写是通过文件对象&#xff08;file object&#xff09;实现的。Python的文件对象也称为类似文件对象或流&#xff08;stream&#xff09;&#xff0c;因为Python提供一种…

springboot笔记示例七:mybiteplus框架mysql8新类型json集成

springboot笔记示例七&#xff1a;mysql8新类型json集成 ###本文md文件下载地址 https://download.csdn.net/download/a254939392/89492142md文件下载 建表SQL CREATE TABLE my_test (id int unsigned NOT NULL AUTO_INCREMENT,txt json DEFAULT NULL,txt_array json DEFAU…