当前位置: 首页 > news >正文

SparkSQL与Hive交互

SparkSQL与Hive交互

    • 一、内嵌Hive应用
    • 二、外部Hive应用
    • 三、运行Spark SQL CLI
    • 四、IDEA操作外部Hive

SparkSQL可以采用内嵌Hive,也可以采用外部Hive。企业开发中,通常采用外部Hive。

一、内嵌Hive应用

内嵌Hive,元数据存储在Derby数据库。
(1)如果使用Spark内嵌的Hive,则什么都不用做,直接使用即可。

[root@bigdata111 spark-local]$ bin/spark-shellscala> spark.sql("show tables").show

注意:执行完后,发现多了$SPARK_HOME/metastore_dbderby.log,用于存储元数据
(2)创建一个表

scala> spark.sql("create table user(id int, name string)")

注意:执行完后,发现多了$SPARK_HOME/spark-warehouse/user,用于存储数据库数据

(3)查看数据库

scala> spark.sql("show tables").show

(4)向表中插入数据

scala> spark.sql("insert into user values(1,'wgh')")

(5)查询数据

scala> spark.sql("select * from user").show

注意:然而在实际使用中,几乎没有任何人会使用内置的Hive,因为元数据存储在derby数据库,不支持多客户端访问。

二、外部Hive应用

如果Spark要接管Hive外部已经部署好的Hive,需要通过以下几个步骤:

(0)为了说明内嵌Hive和外部Hive区别:删除内嵌Hive的metastore_db和spark-warehouse

[root@bigdata111 spark-local]$ rm -rf metastore_db/ spark-warehouse/

(1)确定原有Hive是正常工作的

[root@bigdata111 hadoop-3.1.3]$ sbin/start-dfs.sh
[root@bigdata111 hadoop-3.1.3]$ sbin/start-yarn.sh[root@bigdata111 hive]$ bin/hive

(2)需要把hive-site.xml拷贝到spark的conf/目录下

[root@bigdata111 conf]$ cp hive-site.xml /opt/module/spark-local/conf/

(3)如果以前hive-site.xml文件中,配置过Tez相关信息,注释掉(不是必须

(4)把MySQL的驱动copy到Spark的jars/目录下

[root@bigdata111 software]$ cp mysql-connector-java-5.1.48.jar /opt/module/spark-local/jars/

(5)需要提前启动hive服务,/opt/module/hive/bin/hiveservices.sh start(不是必须

(6)如果访问不到HDFS,则需把core-site.xml和hdfs-site.xml拷贝到conf/目录(不是必须

(7)启动 spark-shell

[root@bigdata111 spark-local]$ bin/spark-shell

(8)查询表

scala> spark.sql("show tables").show

(9)创建一个表

scala> spark.sql("create table student(id int, name string)")

(10)向表中插入数据

scala> spark.sql("insert into student values(1,'wgh')")

(11)查询数据

scala> spark.sql("select * from student").show

三、运行Spark SQL CLI

Spark SQL CLI可以很方便的在本地运行Hive元数据服务以及从命令行执行查询任务。在Spark目录下执行如下命令启动Spark SQL CLI,直接执行SQL语句,类似Hive窗口。

[root@bigdata111 spark-local]$ bin/spark-sqlspark-sql (default)> show tables;

四、IDEA操作外部Hive

(1)在pom中添加依赖

<dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.12</artifactId><version>3.0.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.27</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-hive_2.12</artifactId><version>3.0.0</version></dependency>
</dependencies>

(2)拷贝hive-site.xml到resources目录(如果需要操作Hadoop,需要拷贝hdfs-site.xml、core-site.xml、yarn-site.xml)

(3)代码实现

package com.wghu.sparksqlimport org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession/*** User: WGH* Date:2023-03-08** idea写代码连接外部hive* 1.导入pom依赖,spark-sql  mysql连接驱动,spark-hive* 2.将hive-site.xml放入到项目的类路径下* 3.代码里面获取外部hive的支持,在创建sparkSession对象是加入.enableHiveSupport()*/object SparkSQL12_Hive {def main(args: Array[String]): Unit = {System.setProperty("HADOOP_USER_NAME","root")//1.创建配置对象val conf : SparkConf = new SparkConf().setAppName("SparkSQLTest").setMaster("local[*]")//2.创建sparkSession对象val spark: SparkSession = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()//3.编写代码//连接hivespark.sql("show tables").show()spark.sql("create table bbb(id int,name string)").show()spark.sql("insert into bbb values(1,'wgh')").show()spark.sql("select * from bbb").show()//4.关闭scspark.stop()}}

相关文章:

SparkSQL与Hive交互

SparkSQL与Hive交互一、内嵌Hive应用二、外部Hive应用三、运行Spark SQL CLI四、IDEA操作外部HiveSparkSQL可以采用内嵌Hive&#xff0c;也可以采用外部Hive。企业开发中&#xff0c;通常采用外部Hive。 一、内嵌Hive应用 内嵌Hive&#xff0c;元数据存储在Derby数据库。 &am…...

「题解」日常遇到指针面试题

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1…...

实习生JAVA知识总结目录

一.JAVA基础学习 JAVA知识点全面总结1&#xff1a;零散知识 JAVA知识点全面总结2&#xff1a;面向对象 JAVA知识点全面总结3&#xff1a;String类的学习 JAVA知识点全面总结4&#xff1a;异常类学习 JAVA知识点全面总结5&#xff1a;IO流的学习 JAVA知识点全面总结6&…...

GMPC认证有哪些内容?

【GMPC认证有哪些内容?】GMP(GMP Good Manufacturing Practice)即良好生产规范&#xff0c;最早是美国国会为了规范药品生产而于1963年颁布的。这也是世界上第一部GMP。由于GMP在规范药品的生产&#xff0c;提高药品的质量&#xff0c;保证药品的安全方面效果非常明显&#xf…...

D2-Net: A Trainable CNN for Joint Description and Detection of Local Features精读

开源代码&#xff1a;D2-Net 1 摘要 在这项工作中&#xff0c;我们解决了在困难的成像条件下寻找可靠的像素级对应的问题。我们提出了一种由单一卷积神经网络发挥双重作用的方法&#xff1a;它同时是一个密集的特征描述符和一个特征检测器。通过将检测推迟到后期阶段&#xf…...

Java基础面试题

目录 一&#xff0c;Java基础 1.1.JDK和JRE有什么区别&#xff1f; 1.2.JAVA中的几种基本类型&#xff0c;各占用多少字节&#xff1f; 1.3.和equals的区别是什么&#xff1f; 1.4.final,finally,finalied有什么区别? 1.15.Java 中操作字符串都有哪些类&#xff1f;它们…...

SQL和MongoDB对比

关系型数据库如MySQL和非关系型数据库MongoDB的对应关系&#xff1a;SQLMongoDBdatabasedatabasetablecollectionrowdocument or Bson documentcolumnfieldindexindextable joins$lookupprimary keyprimary key指定任何唯一的列或列组合作为主键主键会自动设置为_id字段aggrega…...

研究链表空间销毁问题

&#x1f4af;&#x1f4af;&#x1f4af; 1.研究链表空间销毁问题 当链表使用完后&#xff0c;需要将链表销毁&#xff0c;那么该如何销毁呢&#xff1f; void SLTDestroy(SLTNode* phead)//销毁单链表 {SLTNode* cur phead;while(cur){free(cur);cur cur->next;} }你…...

Linux面试总结

一.常用命令1.目录切换cd / 切换到根目录cd ../ 切换到上级目录cd ~ 切换到home目录2.查看目录ls 列出当前目录下所有的文件ls [路径]ls / 查看根目录 ls -l 相当于 ll 最常用的命令,用了表的方式列出当前目录的内容3.查看当前目录pwd-4.创建一组空文件touch5.显示文件内容cat6…...

anaconda的linux版本以及jupyter的安装和DataSpell连接linux的jupyter服务器

anaconda安装&#xff1a;官网&#xff1a;https://www.anaconda.com/拷贝下载网址后&#xff0c;在Linux里进行下载&#xff1a;wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh执行sh&#xff1a;./Anaconda3-2022.10-Linux-x86_64.sh 安装完后&a…...

Zookeeper集群和Hadoop集群安装(保姆级教程)

1. HA HA&#xff08;Heigh Available&#xff09;高可用 解决单点故障&#xff0c;保证企业服务 7*24 小时不宕机单点故障&#xff1a;某个节点宕机导致整个集群的宕机 Hadoop 的 HA NameNode 存在单点故障的可能&#xff0c;需要配置 HA 解决引入第二个 NameNode 作为备份同…...

利用matlab的newff构建BP神经网络来实现数据的逼近和拟合

假设P是原始数据向量&#xff1b; T是对应的目标向量&#xff1b; 现在需要通过神经网络来实现P->T的非线性映射。 net newff(minmax(P),[16,1],{tansig,purelin},trainlm); net.trainParam.epochs 2000; net.trainParam.goal 1e-5; net init(net); net train(n…...

【经验分享】电路板上电就挂?新手工程师该怎么检查PCB?

小伙伴们有没有经历过辛辛苦苦&#xff0c;加班加点设计的PCB&#xff0c;终于搞定下单制板。接下来焦急并且忐忑地等待PCB板到货&#xff0c;焊接&#xff0c;验证&#xff0c;一上电&#xff0c;结果直接挂了... 连忙赶紧排查&#xff0c;找问题。最终发现&#xff0c;是打过…...

运筹系列68:TSP问题Held-Karp下界的julia实现

1. 介绍 Held-Karp下界基于1tree下界&#xff0c;但是增加了点权重&#xff0c;如下图 通过梯度下降的方法找到最优的π\piπ。 这里用到的1tree有下面几种&#xff1a; 全部点用来生成最小生成树&#xff0c;再加上所有叶子结点第二短的边中数值最大的那个任意选一个点&…...

神经影像信号处理总成(EEG、SEEG、MRI、CT)

目录一. EEG(脑电图)1.1 脑波1.2 伪迹1.2.1 眼动伪迹1.2.2 肌电伪迹1.2.3 运动伪迹1.2.4 心电伪迹1.2.5 血管波伪迹1.2.6 50Hz和静电干扰1.3 伪迹去除方法1.3.1 避免伪迹产生法1.3.2 直接移除法1.3.3 伪迹消除法二. SEEG(立体脑电图)三. CT&#xff08;计算机断层扫描&#xff…...

ZooKeeper 进阶:基本介绍

zppkeeper是什么 zookeeper是一个高性能、开源的分布式应用协调服务&#xff0c;它提供了简单原始的功能&#xff0c;分布式应用可以基于它实现更高级的服务&#xff0c;比如实现同步(分布式锁)、配置管理、集群管理。它被设计为易于编程&#xff0c;使用文件系统目录树作为数…...

CSS的常用元素属性,显示模式,盒模型,弹性布局

目录 1.常用元素属性 1.1字体属性 设置字体 设置大小 字体粗细 文字样式 1.2文本属性 文字颜色 文字对齐 ​编辑文本装饰 文本缩进 ​编辑行高 ​编辑1.3背景属性 背景颜色 背景位置 背景尺寸 1.4圆角矩形 2.元素的显示模式 2.1块级元素(display:block) 2.…...

【20230308】串口接收数据分包问题处理(Linux)

1 问题背景 一包数据可能由于某些传输原因&#xff0c;经常出现一包数据分成几包的情况。 2 解决方法 2.1 通过设定最小读取字符和读取超时时间 可以使用termios结构体来控制终端设备的输入输出。可以通过VTIME和VMIN的值结合起来共同控制对输入的读取。此外&#xff0c;两…...

数据库复试问题总结

数据库复试问题 由《数据库系统概论(第5版)》总结而来&#xff0c;用于本人研究生复试准备。也欢迎各位准研究生们学习使用。 文章目录数据库复试问题1、三级模式结构及二级映射有什么优点&#xff1f;2、关系模型中的完整性约束是哪几类&#xff1f;3、SQL的特点&#xff1f;…...

Linux操作系统安装——服务控制

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

别再只会用AT指令了!用GD32F103驱动ESP8266实现MQTT连接阿里云(附完整源码)

从AT指令到MQTT协议&#xff1a;GD32F103ESP8266直连阿里云物联网平台实战 在物联网设备开发中&#xff0c;ESP8266作为性价比极高的Wi-Fi模块&#xff0c;常被用于实现设备联网功能。大多数开发者对它的认知停留在AT指令操作层面&#xff0c;通过串口发送简单的AT命令实现TCP连…...

避开这些坑!Mapbox图层管理实战:动态加载GeoJSON数据的正确姿势

Mapbox高级图层管理实战&#xff1a;GeoJSON动态加载与性能优化全解析 当处理省级以上GIS数据可视化时&#xff0c;Mapbox的图层管理能力直接决定了应用的流畅度和用户体验。许多开发者在使用GeoJSON数据源时&#xff0c;常遇到内存泄漏、渲染卡顿、交互延迟等问题。本文将深入…...

cool-admin(midway版)数据权限缓存:基于用户角色的权限数据预加载

cool-admin(midway版)数据权限缓存&#xff1a;基于用户角色的权限数据预加载 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midway.js…...

TouchGal:3个关键功能让你成为真正的Galgame收藏家

TouchGal&#xff1a;3个关键功能让你成为真正的Galgame收藏家 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next 你是否曾为寻找心仪的…...

新手零障碍入门:在免激活的快马平台完成你的第一个Python小游戏

作为一个刚接触编程的新手&#xff0c;我最近在InsCode(快马)平台上完成了人生第一个Python小游戏——猜数字。整个过程比想象中简单得多&#xff0c;特别适合像我这样零基础的小白入门。下面分享我的学习笔记&#xff0c;希望能帮到同样想尝试编程的朋友。 为什么选择猜数字游…...

G-Helper解决华硕笔记本续航衰减的智能调控方案:延长50%使用时间

G-Helper解决华硕笔记本续航衰减的智能调控方案&#xff1a;延长50%使用时间 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF,…...

智慧农业 水稻害虫检测数据集 基于深度学习结合 深度学习模型(YOLOv11) 和 图形用户界面(GUI) 两部分来实现。 PyQt5

智慧化农业-水稻害虫目标检测数据集&#xff0c;3156张&#xff0c;yolo和voc两种标注方式 10类&#xff0c;标注数量&#xff1a; Asiatic Rice Borer: 亚洲稻螟 (716) Brown Plant Hopper: 褐飞虱 (577) Paddy Stem Maggot: 稻茎虫 (104) Rice Gall Midge: 稻瘿蚊 (223) Rice…...

新买的M.2固态硬盘装完系统不认盘?别慌,先检查BIOS里这个开关(附华硕/微星/技嘉主板设置图)

新买的M.2固态硬盘装完系统不认盘&#xff1f;三步排查法主流主板BIOS设置图解 刚给电脑升级了PCIe 4.0的M.2固态硬盘&#xff0c;装系统时却发现BIOS里根本找不到这块盘&#xff1f;这种"硬件失踪案"在DIY圈几乎每周都在上演。去年帮朋友处理过37起类似案例&#xf…...

ThingsBoard生产环境部署选型指南:安装包 vs 源码,内存队列 vs RabbitMQ,如何根据项目规模做选择?

ThingsBoard生产环境部署架构选型实战指南 当技术团队准备将ThingsBoard投入实际生产环境时&#xff0c;面临的第一个关键决策往往不是"如何安装"&#xff0c;而是"以什么架构安装"。这个选择将直接影响未来三年的系统稳定性、扩展性和运维成本。作为经历过…...

告别手动爆肝:用AiScan-N自动化你的CTF Web漏洞测试(SQL注入/文件上传实战)

智能渗透测试革命&#xff1a;AiScan-N在CTF中的实战应用与效率跃升 当凌晨三点的CTF比赛进入白热化阶段&#xff0c;你的眼皮开始打架&#xff0c;而对手却像永动机般不断提交flag——这种场景下&#xff0c;传统手动渗透测试的局限性暴露无遗。我曾亲眼见证一位资深红队成员…...