Spark Sql写代码方式(yarn)以及 spark sql整合hive详解

引入部分:通常我们在IDEA中写spark代码中如果设置了loacl参数,基本都是在IDEA本地运行,不会提交到 standalone或yarn上运行,在前几篇文章中写的大多数都是该种形式的spark代码,但也写到了如何将spark代码提交到standalone或yarn上运行,但是提交的代码都是spark-core形式的代码,今天我们谈一谈使用Spark Sql写代码的几种方式,并在yarn上执行

一、IDEA里面将代码编写好打包上传并提交打到yarn上运行

提交命令:

spark-submit --master yarn --deploy-mode client/cluster --class 主类名 --conf spark.sql.shuffle.partitions=1 jar包名

注意:--conf spark.sql.shuffle.partitions=1该参数为指定分区数

参数的优先级(从高到低):代码的参数 > 命令行设置的参数 > 配置文件设置的参数

这种方式在前面文章中写过,在此不再赘述,文章链接:http://t.csdnimg.cn/gN6tj

二、Spark Shell(repl)

repl:read-eval-print loop

简介:类似于写python代码的jupyter notebook,spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序。spark-shell的本质是在后台调用了spark-submit脚本来启动应用程序的,启动命令为

spark-shell --master  xxx

注意:

--master用来设置context将要连接并使用的资源主节点,master的值是standalone模式中spark的集群地址、或yarn、或mesos集群的URL,或是一个local地址

例如指定本地核数为2:spark-shell --master local[2]

如果需要指定jar包路径,也可以在后面加参数 --jars  jar包路径

回归正题,我们现在使用以下命令与yarn交互:

spark-shell --master yarn --deploy-mode client

可以看到yarn已经开了一个任务供使用,可以在yarn上查看

此时我们就可以在spark shell中写代码了

注意:

1、spark-shell中可以写scala, python(启动pyspark服务),spark-core,spark sql,spark streaming等形式的代码

2、spark-shell不支持yarn-cluster,如果我们的启动命令是spark-shell --master yarn --deploy-mode cluster,那么会报错,spark-shell启动不了

三、Spark SQL 命令行界面(CLI)

简介:Spark SQL 命令行界面(CLI)是一个交互式工具,允许用户直接通过 SQL 语句来查询和分析存储在 Spark 集群中的数据。它提供了一个方便的方式来查询各种数据源,如 Hive、Parquet、JSON、CSV 等,并返回结果给用户。当启动 Spark SQL CLI 时,它会连接到 Spark 集群,并为你提供一个类似于传统 SQL 数据库管理系统的命令行界面。在这个界面中,你可以输入 SQL 语句,然后 Spark SQL 会将这些语句转换为 Spark 作业,在集群上执行,并将结果返回。

启动命令:

spark-sql --master yarn --deploy-mode client

注意:与Spark Shell中类似,spark-sql --master yarn --deploy-mode cluster 命令是不能启动一个交互式的 Spark SQL 命令行界面(CLI)。

使用流程:

1、首先在linux环境中创建一个文件夹

mkdir spark-sql-master

2、进入该文件夹中并启动CLI

spark-sql --master yarn --deploy-mode client

在此界面我们可以只能写纯sql语法,就像使用传统的SQL 数据库一样。

现在进入spark-sql-master文件夹下,发现多出了一些文件,这些文件存储的就是刚刚在命令行创建数据库、数据表的信息数据,元数据信息,以及日志信息。如果我们将此文件夹删除,那么在就意味着创建的数据库、数据表等信息也将不存在。

这种启动方式的数据库是以文件的形式存储在本地的,但观察启动时的日志发现,其实默认应该是在hive中的,只是我们没有指定,所以就在本地存储了。

现在,我们开始使用spark sql去整合hive,hive底层默认是使用MapReduce框架进行计算的,因此速度很慢,现在使用spark框架结合hive,能使速度大大提升。

四、spark sql整合hive

1、vim hive-site.xml

在hive的hive-site.xml修改以下配置,增加了这一行配置之后,以后在使用hive之前都需要先启动元数据服务。其实这个配置我们在hive启动beline模式时就已经配置过,否则beline模式是开启不了的。

<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>

 

2、将hive-site.xml 复制到spark conf目录下

使spark jars共用hive的元数据信息

cp /usr/local/soft/hive-3.1.2/conf/hive-site.xml /usr/local/soft/spark-3.1.3/conf/

 

3、将mysql 驱动包复制到spark jars目录下

 cp /usr/local/soft/hive-3.1.2/lib/mysql-connector-java-8.0.29.jar /usr/local/soft/spark-3.1.3/jars/

 

4、整合好之后在spark-sql里面就可以使用hive的表了

4.1启动hive元数据服务与hiveserver2服务

nohup hive --service metastore &

nohup hiveserver2 &

4.2 进入Spark SQL 命令行界面

spark-sql --master yarn --deploy-mode client

如果测试的资源不够,也可以指定参数进入:

spark-sql --master yarn --deploy-mode client --conf spark.sql.shuffer.partitions=1 --executor-memory 512m --total-executor-cores 1

此时,我们查询的数据库或表就是hive中的了:

4.3 spark sql 与 hive sql 查询速度对比

执行以下sql语句,对比查询速度:

SELECT clazz, COUNT(1) AS stu_num FROM datax_students GROUP BY clazz ORDER BY stu_num DESC;

经过测试使用spark差不多速度比hive要快10倍左右(spark官网写的是100倍   ^_^)

五、在IDEA使用代码操作spark整合的hive

1、添加以下依赖

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.12</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-exec</artifactId>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>
 
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.0</version>
<dependency>

2、将以下四个配置文件加入到资源文件夹下

hive中的hive-site.xml和hadoop中的其他三个文件

3、编写代码测试

import org.apache.spark.sql.SparkSession

object SparkSqLOnHive {
  def main(args: Array[String]): Unit = {
    val sparkSession: SparkSession = SparkSession.builder()
      .master("local")
      .appName("spark读取hive数据")
      .enableHiveSupport()
      .config("spark.sql.shuffle.partitions", 1)
      .getOrCreate()

    import sparkSession.implicits._
    import org.apache.spark.sql.functions._

    sparkSession.sql("show databases")
    sparkSession.sql("select * from bigdata29.emp").show()

  }

}

结果:

六、在linux命令行写spark-sql

1、方式一:spark-sql -e

-- 执行一条sql语句,执行完,自动退出
spark-sql -e "select * from bigdata29.emp"

2、方式二:spark-sql -f

2.1 创建比编写sql脚本文件

vim test.sql

2.2 命令行执行该文件

spark-sql -f  test.sql

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型微调:Lora

原理图 原理&#xff1a;不改变原始大模型参数&#xff0c;只加入一个类似残差分支&#xff0c;先降纬再升纬&#xff0c;因为模型是过参数化的&#xff0c;它们有更小的内在维度&#xff0c;模型主要依赖于这个低的内在维度&#xff08;low intrinsic dimension&#xff09;去…

基于LLM的优化器评测

基于LLM的优化器评测 求解的目标函数测试结果测试代码测试日志 背景: ​ 很多时候我们需要为系统寻找最优的超参.比如模型训练,推理的量化等.本文尝试将LLM当成优化器,帮忙我们寻找最优的超参. 验证方法: 1.设计一个已知最优解的多项式,该多项式有3个变量(因为3个变量可以通过…

飞睿智能高精度、低功耗测距,无线室内定位UWB芯片如何改变智能家居

在数字化和智能化快速发展的今天&#xff0c;定位技术已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;传统的GPS定位技术在室内环境中往往束手无策&#xff0c;给我们的生活带来了诸多不便。幸运的是&#xff0c;随着科技的不断进步&#xff0c;一种名为UWB&#xf…

符合车规级漏电流检测的磁通门传感器KTD1100

电动车充电桩 在政策出台后&#xff0c;充电桩类产品按要求需装配B端漏电流检测装置。它可以有效防止充电桩等设备中的漏电流对用户造成危害&#xff0c;保障用户的用电安全。其次&#xff0c;它可以促进充电桩等产品的质量提升&#xff0c;提高市场的公平竞争&#xff0c;让消…

汽车合面合壳密封UV胶固化后一般可以耐多少度的高温和低温? 汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车合面合壳密封UV胶固化后一般可以耐多少度的高温和低温? UV胶固化后的耐高温和低温能力取决于具体的UV胶水品牌和型号&#xff0c;以及固化过程中的条件。一般来说&#xff0c;高品质的UV胶水在固化后可以提供较好的耐温性能&#xff0c;但确切的耐温范围需要参考各个厂家提…

24年gdcpc省赛C题

1279:DFS 序 先不考虑多节点,先看着颗二叉树,假设他们的父亲节点是第k个被访问的点,如果先访问左子树,那么得到的结果是a1*ka2*(k1)b1*(2k)b2*(2k1),可以发现,先访问左子树,那么右子树每次的乘以的p值实际上是左子树乘以的p值加上左子树的节点个数,比如a1*k和b1*(2k),如果不看2…

Bookie存储架构源码剖析|得物技术

一、Pulsar存储架构简析 Pulsar作为新一代MQ中间件&#xff0c;在底层架构设计上充分贯彻了存算分离的思想&#xff0c;broker与Bookeeper两个组件独立部署&#xff0c;前者负责流量的调度、聚合、计算&#xff0c;后者负责数据的存储&#xff0c;这也契合了云原生下k8s大行其…

新旅程:类与对象的魔法课堂

&#x1f389;&#x1f389;&#x1f389;欢迎莅临我的博客空间&#xff0c;我是池央&#xff0c;一个对C和数据结构怀有无限热忱的探索者。&#x1f64c; &#x1f338;&#x1f338;&#x1f338;这里是我分享C/C编程、数据结构应用的乐园✨ &#x1f388;&#x1f388;&…

聚会活跃气氛神器小程序源码系统 各种小游戏 让聚会不再冷场 带源代码包以及安装搭建教程

系统概述 在社交聚会中&#xff0c;如何让气氛活跃起来一直是一个让人关注的问题。小编给大家分享一款聚会活跃气氛神器小程序源码系统。它不仅提供了丰富多样的小游戏&#xff0c;还带有源代码包和详细的安装搭建教程&#xff0c;让你轻松打造属于自己的聚会互动平台。 代码…

根据经纬度点计算经纬度点之间的距离

根据经纬度点计算经纬度点之间的距离 根据两点经纬度坐标计算直线距离 根据经纬度点计算经纬度点之间的距离 根据经纬度计算两地之间的距离 根据两点经纬度坐标计算距离 其实看第一个就够了 根据 半正矢公式&#xff08;Haversine formula&#xff09;即可计算 本计算式选取地…

【Django】开发个人博客系统【1】

使用Django开发个人博客系统&#xff0c;博客系统包括用户&#xff08;博主&#xff09;注册和登录、博主资料信息、图片墙功能、留言板功能、文章列表、文章正文内容和Admin后台系统。 1. 项目架构设计 下一步将上述设置写入Django的配置文件settings.py&#xff0c;当Django…

【C语言编程】Codeblocks安装步骤

操作系统 Windows 11 操作系统 安装步骤 1、 访问Codeblocks官网&#xff1a;Codeblocks官网&#xff0c;点击Download下载&#xff1a; 下载好的安装包&#xff1a; 2、 右键——以管理员身份运行&#xff1a; 3、 点击Next下一步&#xff1a; 4、 点击I Agree同意用…

解锁数据关联之道:SQL 表连接详解

文章目录 概述表关系横向连接内连接 inner join左连接 left join右连接 right join全连接 full join交叉连接 cross join 纵向合并UNION ALLUNION 概述 在数据处理、数据分析中常会用到表连接。表连接的作用是将多个表中的数据关联起来&#xff0c;以便在查询过程中获取更全面…

【LabVIEW FPGA入门】使用事件发生函数同步FPGA循环

1.使用事件发生函数 使用 Occurrences 函数来控制单独的同步活动。特别是&#xff0c;当您希望程序框图的一部分等待程序框图的另一部分完成任务而不强制 LabVIEW 进行轮询时&#xff0c;请使用这些函数。 您可以使用全局变量执行类似于occurrences函数的功能&#xff0c;通过一…

通过Windows事件日志介绍APT-Hunter

APT-Hunter是用于Windows事件日志的威胁搜寻工具&#xff0c;该工具能够检测隐藏在Windows事件日志中的APT运动&#xff0c;如果您是弄威胁情报的人&#xff0c;那么我保证您会喜欢使用此工具的&#xff0c;为什么&#xff1f;我将在本文中讨论原因&#xff0c;请注意&#xff…

音视频开发9 FFmpeg 解复用框架说明,重要API说明

一&#xff0c;播放器框架 二 常用音视频术语 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a; 即特定格式的多媒体文件&#xff0c; 比如mp4、flv、mkv等。 媒体流&#xff08;Stream&#xff09;&#xff1a; 表示时间轴上的一段连续数据&#xff0…

数据整理的Compact流程 (二)|OceanBase数据转储合并技术解读(二)

上篇文章《数据整理的Compact流程 &#xff08;一&#xff09;&#xff5c;OceanBase数据转储合并技术解读&#xff08;二&#xff09;》中&#xff0c;有讲解到&#xff0c;在OceanBase数据库中&#xff0c;当MemTable写满时&#xff0c;将其下刷到Mini SSTable的过程包含两个…

「小明赠书活动」第四期《Java开发坑点解析:从根因分析到最佳实践》

目录 ⭐️ 赠书 - 《Java开发坑点解析&#xff1a;从根因分析到最佳实践》 参 加 活 动 方 式 见 文 末 ⭐️内容简介 -《Java开发坑点解析&#xff1a;从根因分析到最佳实践》 ⭐️阅读建议 -《Java开发坑点解析&#xff1a;从根因分析到最佳实践》 ⭐️《Java开发坑…

CSS 介绍及用法,常用属性

一、CSS介绍 A. 简介 CSS全称&#xff1a;全称为层叠样式表&#xff08;Cascading Style Sheets&#xff09;&#xff0c;是一种用于描述网页外观和格式的计算机语言。CSS可以使网页的布局更加丰富和多样化&#xff0c;并且可以将样式信息与网页内容分离&#xff0c;使得网…

C语言——基于stm32G030的温湿度传感器项目实验

一、功能要求&#xff1a; 设备自检功能&#xff1a; 设备上电自检&#xff08;检查传感器采集是否正常&#xff0c; DHT11有存在响应&#xff0c; 可以自检使用&#xff0c; &#xff09;自检通过后&#xff0c;由串口打印设备状态信息。 自动控制功能&#xff1a; 进入自动控…