Spark On Hive配置测试及分布式SQL ThriftServer配置

文章目录

    • Spark On Hive的原理及配置
      • 配置步骤
      • 在代码中集成Spark On Hive
    • Spark分布式SQL执行原理及配置
      • 配置步骤
      • 在代码中集成Spark JDBC ThriftServer
    • 总结

Spark On Hive的原理及配置

  • Spark本身是一个执行引擎,而没有管理metadate的能力,当我们在执行SQL的时候只能将SQL转化为RDD提交。而对于一些数据中的元数据Spark并不知道,而Spark能写SQL主要是通过DataFrame进行注册的。
  • 这时候我们就可以借助Hive中的MetaStore进行元数据管理。也就是说把Hive中的metastore服务器直接拿过来给Spark使用。

配置步骤

  1. 在spark安装的conf目录下创建hive-site.xml
<configuration><!-- 告知spark创建表位置 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><!-- 告知spark hive metastore位置 --><property><name>hive.metastore.uris</name><value>thrift://node1:9083</value></property>
</configuration>
  1. 将mysql驱动Jar包放在spark安装的jars目录中
  2. 确保Hive配置了metastore的服务
<!-- 远程模式部署metastore metastore地址 -->
<property><name>hive.metastore.uris</name><value>thrift://node1:9083</value>
</property>
  1. 启动metastore服务
 nohup bin/hive --service metastore 2>&1 >> /export/server/apache-hive-3.1.2/log/metastore.log &
  1. 测试:在spark安装的bin目录下,启动spark-sql直接编写sql。

在代码中集成Spark On Hive

# 确保metastore服务是开启的
if __name__ == '__main__':ss = SparkSession.builder \.appName("test") \.master("local[*]") \.config("spark.sql.shuffle.partitions", 2) \.config("spark.sql.warehouse.dir", "hdfs://node1:8020/user/hive/warehouse/") \.config("hive.metastore.uris", "thrift://node1:9083") \.enableHiveSupport() \.getOrCreate()sc = ss.sparkContextss.sql('''select * from student''').show()

Spark分布式SQL执行原理及配置

  • Spark中ThriftServer,监听10000端口的服务,能够使开发者直接使用数据库工具或者代码连接,并且直接通过编写SQL来操作Spark。前提确保metastore服务+spark on hive配置

配置步骤

  1. 配置spark on hive步骤相同
  2. 启动ThriftServer服务
./start-thriftserver.sh --hiveconf hive.server2.thrift.port=10000 --hiveconf hive.server2.thrift.bind.host=node1 --master local[2]
  1. 测试:通过DBeaver等工具连接Spark
    在这里插入图片描述

在代码中集成Spark JDBC ThriftServer

  1. 安装pyhive所需要的linux依赖包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make gcc-c++ python-devel cyrus-sasl-devel cyrus-sasl-plain cyrus-sasl-gssapi -y
pip install pyhive pymysql sasl thrift thrift_sasl
  1. 代码测试
from pyhive import hiveif __name__ == '__main__':# 获取到Hive(Spark Thrift连接)conn = hive.connect(host="node1", port=10000, username="root")# 获取一个游标对象cursor = conn.cursor()# 执行SQLcursor.execute("SELECT * FROM student")# 通过fetchall函数返回结果res = cursor.fetchall()print(res)

总结

  • 分布式SQL执行引擎就是使用Spark提供的ThriftServer服务,以“后台进程”的模式持续运行,对外提供端口。
  • SQL提交后,底层运行的就是Spark任务。相当于构建了一个以MetaStore服务为元数据,Spark为执行引擎的数据库服务,像操作数据库那样方便的操作SparkSQL进行分布式的SQL计算。

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

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

相关文章

Jenkins环境配置篇-更换插件源

作为持续集成的利器 Jenkins 已经得到了广泛地应用&#xff0c;仅仅作为一个工具&#xff0c;Jenkins 已然有了 自己的生态圈&#xff0c;支持其的 plugin 更是超过 1300。在实际中如何使用以及如何更好地使用 jenkins&#xff0c;一直是大家在实践并讨论的。本系列文章将会从如…

Beego之Beego快速入门

1、beego快速入门 1.1 新建项目 新建一个项目&#xff1a; [rootzsx src]# bee new quickstart 2023/02/19 15:55:50.370 [D] init global config instance failed. If you do not use this, just ignore it. open conf/app.conf: no such file or directory 2023/02/19 1…

接口自动化框架搭建-写在前面

从今天开始&#xff0c;我将带领大家一起学习接口自动化框架的搭建&#xff0c;在学习之前&#xff0c;我们先了解搭建一个接口自动化框架需要具备哪些知识&#xff0c;应该做哪些准备工作 测试开发工程师的入门条件 近几年比较流行测试开发岗位&#xff0c;很多小伙伴都不知…

C++:史上最坑小游戏

史上最坑小游戏&#xff0c;先别使用&#xff0c;往后看&#xff01; #include<bits/stdc.h> #include <windows.h> using namespace std; int panduolamohe ; int main(){cout<<"玩到无语的小游戏&#xff01;&#xff01;&#xff01;";Sleep(5…

将Matlab图窗中的可视化保存为背景透明的矢量图

将matlab绘制的结果复制为矢量图时&#xff0c;去除背景的操作如下&#xff1a; 先打开/绘制图形窗口(不要关闭)在命令行终端输入axis off关闭坐标系继续在命令行终端分别输入&#xff1a; ax gca; copygraphics(ax,ContentType,vector,BackgroundColor,none); 此时&#xff…

消息队列介绍

什么是 MQ MQ(message queue)&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff0c;MQ 是一种非常常 见的上下游“逻辑解耦…

Unity -简单键鼠事件

“Test_03” KeyTest 键鼠事件每帧都要监听&#xff0c;要放在Update()中处理 public class KeyTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 【鼠标点击事件】 0左键、1右键…

【PGSQL】date_trunc 函数

date_trunc 函数用于在 PostgreSQL 中将日期或时间戳值截断&#xff08;向下取整&#xff09;到指定的精度级别。当您想要忽略较小的时间单位&#xff08;例如&#xff0c;小时、分钟、秒&#xff09;&#xff0c;专注于较大的单位&#xff08;例如&#xff0c;天、月、年&…

SpringBoot 项目中后端实现跨域的5种方式!!!

文章目录 SpringBoot 项目中后端实现跨域的5种方式&#xff01;&#xff01;&#xff01;一、为什么会出现跨域问题二、什么是跨域三、非同源限制四、Java后端 实现 CORS 跨域请求的方式1、返回新的 CorsFilter(全局跨域)2、重写 WebMvcConfigurer(全局跨域)3、使用注解 (局部跨…

实战纪实 | 某配送平台zabbix 未授权访问 + 弱口令

本文由掌控安全学院 - 17828147368 投稿 找到一个某src的子站&#xff0c;通过信息收集插件wappalyzer&#xff0c;发现ZABBIX-监控系统&#xff1a; 使用谷歌搜索历史漏洞&#xff1a;zabbix漏洞 通过目录扫描扫描到后台&#xff0c;谷歌搜索一下有没有默认弱口令 成功进去了…

Failed resolution of: Lorg/apache/hc/core5/http/message/BasicNameValuePair;

这是我引用的库文件 implementation (“com.esri.arcgisruntime:arcgis-android:100.15.3”) 使用ArcGIS绘制天地图报错如下&#xff1a; Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/hc/core5/http/message/BasicNameValuePair; 查询资料得…

Python——enumerate与zip结合使用

对于同时需要遍历两个及以上的列表的情况下&#xff0c;需要enumerate与zip结合使用。 一、例子 for i, (image, feature) in enumerate(zip(images, features)):.........

LeetCode:206. 反转链表

力扣链接 算法思想&#xff1a;由于单链表是单向的&#xff0c;想要对当前元素进行操作&#xff0c;需找到前一个元素。本题利用双指针&#xff0c;初始pre指针指向NULL&#xff0c;cur指针指向head.再对局部翻转之前&#xff0c;先把下一个结点存到temp指针中。当进行完如下代…

构建中国人自己的私人GPT

创作不易&#xff0c;请大家多鼓励支持。 在现实生活中&#xff0c;很多人的资料是不愿意公布在互联网上的&#xff0c;但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢&#xff1f;于是我们构建自己或公司的私人GPT变得非常重要。 先看效果 他的…

YOLOv8全网首发:新一代高效可形变卷积DCNv4如何做二次创新?高效结合SPPF

💡💡💡本文独家改进:DCNv4更快收敛、更高速度、更高性能,与YOLOv8 SPPF高效结合 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适合paper !!! 💡💡💡…

视频水平翻转,开启创意之旅

想象一下&#xff0c;一段普通的视频在瞬间被水平翻转&#xff0c;画面中的一切仿佛被镜子所反射&#xff0c;给人一种惊艳而又奇妙的感受。在这个充满无限可能的数字时代&#xff0c;我们不应被传统的视觉效果所束缚&#xff0c;尝试运用水平翻转技术&#xff0c;为你的作品注…

Linux /etc/issue 内的各代码意义

\d 本地端时间的日期&#xff1b; \l 显示第几个终端机接口&#xff1b;&#xff08;小写的L&#xff09; \m 显示硬件的等级 &#xff08;i386/i486/i586/i686…&#xff09;&#xff1b; \n 显示主机的网络名称&#xff1b; \O 显示 domain name&#xff1b; \r 操作系统…

安装Office Web Apps 2013

Office Web Apps 可以让用户通过浏览器就能操作Office文件&#xff08;Word,PowerPoint,Excel&#xff09;&#xff0c;客户端可以不安装Office&#xff0c;而且不用担心2003和2007文档格式的问题。下面入正题。 一、安装环境 因为Office Web Apps要求安装环境中不能用其它服…

pytest文档内置fixture的request详情

前言 request 是 pytest 的内置 fixture &#xff0c; "为请求对象提供对请求测试上下文的访问权&#xff0c;并且在fixture被间接参数化的情况下具有可选的“param”属性。"这是官方文档对request的描述&#xff0c;可参考的文档不多。 一、FixtureRequest Fixtur…

C#基本语法

定义&#xff1a;C#是一种面向对象的编程语言。 using关键字 在任何c#程序中的第一条语句都是 using System; using关键字用于在程序中包含命名空间。一个程序可以包含多个using语句 class关键字 class关键字用于声明一个类 C#的注释 注释是用于解释代码。编译器会忽略…