spark是什么意思?(秋山一个老司机从上车到翻车的心酸经历)
admin
2023-08-31 19:45:29

作者|爱丽丝菌

编辑|晚美

出品|CSDN博客

本博客将为大家分享的是如何实现SparkonHive,即让Hive只扮演存储的角色,Spark负责sql解析和优化,执行……不多说直接上车!

上车前你需要了解Sparkonhive与hiveonspark的区别

1.火花生活

Spark使用hive语句,通过Spark-SQL操作hive,sparkrdd运行在底层。

(1)通过sparksql加载hive的配置文件,获取hive的元数据信息。

(2)sparksql在获取hive的元数据信息后,可以获取hive的所有表的数据。

(3)然后可以通过sparksql操作hive表中的数据。

2 .海文公园

就是用sparkrdd(spark执行引擎)操作代替mapreduce的mr(Hadoop计算引擎)操作中的hive query。和spark Hive相比,实现起来要麻烦很多,必须重新编译你的spark,导入jar包,但是目前大部分都是用Spark Hive。

上车

概述

最权威的解释见ApacheSpark官网,http://spark . Apache . org/docs/latest/SQL-data-sources-hive-tables . html。

其中最关键的一句话,博主,已经摘抄给大家了。

configurationhfivesdonebyplacingyourhhive-site . XML、core-site.xml(用于安全配置)和dfs-site.xml(用于hdfs配置)文件。

这是什么意思?先卖到这里吧,看到后面的人你就明白了。

Hive查询过程和原理

执行HQL时,先在MySQL元数据库中查找描述信息,然后解析HQL,根据描述信息生成MR任务;

Hive将SQL转换成MapReduce,执行速度慢;

将Hive与SparkSQL集成,实际上就是让SparkSQL加载Hive的元数据库,然后通过SparkSQL执行引擎对Hive表中的数据进行操作。

首先,你需要启动Hive的metabase服务,这样SparkSQL才能加载元数据。

发车

一、Hive开启MetaStore服务

1修改hive/conf/hive-site.xml并添加以下配置:

?xmlversion='1.0 'XML-style sheet type=' text/xsl ' href=' configuration . xsl 'configuration propertynamehive . metastore . warehouse . dir/name Value/user/hive/warehouse/Value/propertynamehive . metastore . local/name Value false/Value/propertynamelive。metastore . uri/namevaluethrift ://node 01:9083/value/property/configuration 2在后台启动HiveMetaStore服务。

nohup/export/servers/hive/bin/hive-servicemetastore 21/var/log . log二、SparkSQL整合HiveMetaStore

Spark有一个内置的MateStore,它使用Derby嵌入式数据。

库保存数据,但是这种方式不适合生产环境,因为这种模式同一时间只能有一个SparkSession使用,所以生产环境更推荐使用Hive的MetaStore。

SparkSQL整合Hive的MetaStore主要思路就是要通过配置能够访问它,并且能够使用HDFS保存WareHouse,所以可以直接拷贝Hadoop和Hive的配置文件到Spark的配置目录。

hive-site.xml元数据仓库的位置等信息

core-site.xml安全相关的配置

hdfs-site.xmlHDFS相关的配置

我们进入到shell窗口,执行以下命令。

将hive目录下的hive-site.xml拷贝至spark安装目录下:

cp/export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml/export/servers/spark/conf

将hadoop安装目录下的core-site.xml和hdfs-site.xml拷贝至spark安装目录下

cp/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml/export/servers/spark/conf
cp/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml/export/servers/spark/conf

提示:使用IDEA本地测试直接把以上配置文件放在resources目录即可。

飙车

先完成如下所示的代码,使用SparkSQL完成创建一个表,并将本地文件中的数据导入到表格中的操作。

使用SparkSQL操作Hive表:

importorg.apache.spark.sql.SparkSession

objectHiveSupport{defmain(args:Array[String]):Unit={//创建sparkSessionvalspark=SparkSession.builder.appName("HiveSupport").master("local[*]").config("spark.sql.warehouse.dir","hdfs://node01:8020/user/hive/warehouse").config("hive.metastore.uris","thrift://node01:9083").enableHiveSupport//开启hive语法的支持.getOrCreate

//设置日志级别spark.sparkContext.setLogLevel("WARN")

//查看有哪些表spark.sql("showtables").show

//创建表spark.sql("CREATETABLEperson(idint,namestring,ageint)rowformatdelimitedfieldsterminatedby''")

//加载数据,数据为当前SparkDemo项目目录下的person.txt(和src平级)spark.sql("LOADDATALOCALINPATH'in/person.txt'INTOTABLEperson")

//查询数据spark.sql("select*fromperson").show

spark.stop}}

在运行程序之前,先让我们进入到hive的shell窗口,查看一下当前默认数据库default有哪些表:

hive(default)>showtables;
OKtab_namestudenttechertecher2Timetaken:0.738seconds,Fetched:3row(s)hive(default)>

然后右键运行,当IDEA控制台打印以下结果,说明我们的程序运行成功了。

再次进入到hive的shell窗口,查看当前表,此时已经发现了我们刚刚用SparkSQL所创建的表:

翻车

正当博主终于长舒了一口气,准备拿出82年珍藏的雷碧小酢一杯的时候,电脑可能是馋哭了,直接蓝屏警告。

好了,不说了,说多了都是泪,本次的分享就到这里,身为蒟蒻本蒻的我去抢救电脑了,或许喂Ta喝点也不至于罢工是吧 ̄へ ̄

版权声明:本文为CSDN博主「Alice菌」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44318830/java/article/details/105471548

相关内容

热门资讯

金花创建房间/微信金花房卡怎么... 1.微信渠道:(荣耀联盟)大厅介绍:咨询房/卡添加微信:88355042 2.微信游戏中心:打开微...
金花房间卡/金花房卡如何购买/... 金花房间卡/金花房卡如何购买/新超圣金花房卡正版如何购买新超圣是一款非常受欢迎的游戏,咨询房/卡添加...
牛牛创建房间/金花房卡批发/神... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...
链接牛牛/牛牛房卡游戏代理/鸿... 鸿运大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科技实测!牛牛房卡怎么获得/乐... 微信游戏中心:乐酷大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...