淘宝客自建网站,网站建设免费学习,企业网站可以做一级等保吗,合肥做网站联系方式作者 | Alice菌责编 | 夕颜出品 | CSDN博客本篇博客将为大家分享的内容是如何实现Spark on Hive#xff0c;即让Hive只作为存储角色#xff0c;Spark负责sql解析优化#xff0c;执行…话不多说#xff0c;直接上车#xff01;上车前需知Spark on hive 与 hive on spark 的… 作者 | Alice菌责编 | 夕颜出品 | CSDN博客本篇博客将为大家分享的内容是如何实现Spark on Hive即让Hive只作为存储角色Spark负责sql解析优化执行…话不多说直接上车 上车前需知Spark on hive 与 hive on spark 的区别1. Spark on hive是spark 通过Spark-SQL使用hive 语句操作hive ,底层运行的还是 spark rdd。1就是通过sparksql加载hive的配置文件获取到hive的元数据信息2spark sql获取到hive的元数据信息之后就可以拿到hive的所有表的数据3接下来就可以通过spark sql来操作hive表中的数据2.hive on spark是把hive查询从mapreduce 的mr (Hadoop计算引擎)操作替换为spark rddspark 执行引擎 操作. 相对于spark on hive,这个要实现起来则麻烦很多, 必须重新编译你的spark和导入jar包不过目前大部分使用的是spark on hive。上车概述最权威的解释请见Apache Spark官网http://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html其中最关键的一句博主已经为大家提取出来了Configuration of Hive is done by placing your hive-site.xml, core-site.xml (for security configuration), and hdfs-site.xml (for HDFS configuration) file in conf/.到底是什么意思呢这里先卖个关子看到后面大伙就懂了。Hive查询流程及原理执行HQL时先到MySQL元数据库中查找描述信息然后解析HQL并根据描述信息生成MR任务Hive将SQL转成MapReduce执行速度慢使用SparkSQL整合Hive其实就是让SparkSQL去加载Hive 的元数据库然后通过SparkSQL执行引擎去操作Hive表内的数据首先需要开启Hive的元数据库服务让SparkSQL能够加载元数据。 发车一、Hive开启MetaStore服务1修改 hive/conf/hive-site.xml 新增如下配置?xml version1.0?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configurationpropertynamehive.metastore.warehouse.dir/namevalue/user/hive/warehouse/value/propertypropertynamehive.metastore.local/namevaluefalse/value/propertypropertynamehive.metastore.uris/namevaluethrift://node01:9083/value/property/configuration
2后台启动 Hive MetaStore服务nohup /export/servers/hive/bin/hive --service metastore 21 /var/log.log
二、SparkSQL整合Hive MetaStoreSpark 有一个内置的 MateStore使用 Derby 嵌入式数据库保存数据但是这种方式不适合生产环境因为这种模式同一时间只能有一个 SparkSession 使用所以生产环境更推荐使用 Hive 的 MetaStore。SparkSQL 整合 Hive 的 MetaStore 主要思路就是要通过配置能够访问它 并且能够使用 HDFS 保存 WareHouse所以可以直接拷贝 Hadoop 和 Hive 的配置文件到 Spark 的配置目录。 hive-site.xml 元数据仓库的位置等信息 core-site.xml 安全相关的配置 hdfs-site.xml HDFS 相关的配置 我们进入到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表import org.apache.spark.sql.SparkSessionobject HiveSupport {def main(args: Array[String]): Unit {//创建sparkSessionval spark 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(show tables).show()//创建表spark.sql(CREATE TABLE person (id int, name string, age int) row format delimited fields terminated by )//加载数据,数据为当前SparkDemo项目目录下的person.txt(和src平级)spark.sql(LOAD DATA LOCAL INPATH in/person.txt INTO TABLE person)//查询数据spark.sql(select * from person ).show()spark.stop()}
}
在运行程序之前先让我们进入到hive的shell窗口查看一下当前默认数据库default有哪些表hive (default) show tables;OK
tab_name
student
techer
techer2
Time taken: 0.738 seconds, Fetched: 3 row(s)
hive (default)
然后右键运行当IDEA控制台打印以下结果说明我们的程序运行成功了。再次进入到hive的shell窗口查看当前表此时已经发现了我们刚刚用SparkSQL所创建的表翻车正当博主终于长舒了一口气准备拿出82年珍藏的雷碧小酢一杯的时候电脑可能是馋哭了直接蓝屏警告。好了不说了说多了都是泪本次的分享就到这里身为蒟蒻本蒻的我去抢救电脑了或许喂Ta喝点也不至于罢工是吧へ版权声明本文为CSDN博主「Alice菌」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。原文链接https://blog.csdn.net/weixin_44318830/java/article/details/105471548推荐阅读
大数据Spark利用电影观看记录数据进行电影推荐| 原力计划我程序猿被银行套路了数据科学产业中哪些架构最热门本文为你盘点了 5 款陆奇疫情下的创业者最不能缺这两大能力滴滴技术总监受贿 1000 万列入招聘黑名单互联网大厂反腐有多强用 Python 训练自己的语音识别系统这波操作稳了区块链如何解决食品安全问题真香朕在看了