sparkhive(sparkhive与hadoop)
本篇文章给大家谈谈sparkhive,以及sparkhive与hadoop对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
spark与hive查询得出的数据不同
在实际工作的情况中,经常有spark与hive查询出来的数据存在不一样的燃物情况,基本哗激的原因如下:
1、由于精度不一样导致的
2、更多的时候确实是由于元数据混乱导致的
(就是说hive中能读皮芦液到这个字段的值,但是在spark中却无法读取到该字段的值。
很多时候可能还是由于大小写的混乱所导致的)
同一条sql,hive能生成表,而spark却生成的一张空表,或者数据缺少,存在null值,与hive结果不一致
设置
spark.sql.hive.convertMetastoreOrc=false
convertMetastoreParquet=false
原因:
spark用自己的格式读取hive文件后进行自动转换后进行操作
官方说明
[img]如何解决spark写hive慢的问题
dataframe.registerTempTable("result")
sql(s"""INSERT OVERWRITE Table $outputTable PARTITION (dt ='$outputDate') select * from result""")
而整个结果数据的产生只需要4分钟左右的时间,比如以下方式:将结果以textfile存入慧辩hdfs:
result.rdd.saveAsTextFile(output_tmp_dir)
由此可见,对hive的写入操作耗用了大量的时间。
对此现象的空启优化可以是,将文件存为符合hive table文件的格式前亏缺,然后使用hive load将产生的结果文件直接move到指定目录下。代码如下:
result.rdd.map { r = r.mkString("\001") }.repartition(partitions).saveAsTextFile(output_tmp_dir)
sql(s"""load data inpath '$output_tmp_dir' overwrite into table $output partition (dt='$dt')""")
Spark与Hive集成
将hive-site.xml拷贝到${SPARK_HOME}/conf下。
根据hive的配置参数hive.metastore.uris的情况,采用不同的集成方式
分别:
配置hive.metastore.uris的方式。
如果没有配置全局hive,就使用bin/hive --service metastore
这样就不再需要配置hive.metastore.uris参数配置。使用“,”分隔多个jar。
使用场景:要求Spark应用运行的所有机器上必须存在被添加的第三方jar文件
a. 创建一个保存第三方jar文件的文件夹:
b.修改祥如御Spark配置信息谨岩
c. 将依赖的jar文件copy到新建的文件夹中
备注:
如果spark on yarn(cluster),橡配如果应用依赖第三方jar文件,最终解决方案:将第三方的jar文件copy到${HADOOP_HOME}/share/hadoop/common/lib文件夹中(Hadoop集群中所有机器均要求copy)
参考链接:
Hadoop、Hive、Spark三者的区别和关系
Hadoop分为两大部分:HDFS、Mapreduce。
HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
由于编写MapReduce程序繁琐复瞎正杂,而sql语言比较简单,程序员就开发出了支持sql的hive。hive的出现方便了程序员和没有计算机背景的数据分析人员。我们只需要编写相对简单的sql命令,hive会帮我们翻译为mapreduce程序交给计算机去执行。
mapreduceh这个计算框架每次执行都是从磁盘中读取的,而spark则是直接从内存中读取的。由于MapReduce 的框架限制,一个 MapReduce 任务只能包含一次 Map 和一次 Reduce,计算完成之后,MapReduce 会将运算结果写回到磁盘中(更准确地说是分布式存储系统)供下次计算使用。如果所做的运算涉及大量循环,比如估计模型参数的梯度下降或随机梯度下降算法就需要多次循环使用训练数据磨悄悔,那么整个计算过程会不断重复地往磁盘里读写中间结果。这样的读写数据会引起大量的网络传输以及磁盘读写,极其耗时,而且它运迟们都是没什么实际价值的废操作。因为上一次循环的结果会立马被下一次使用,完全没必要将其写入磁盘。
所以spark可以理解为mapreduce的改进升级版
关于sparkhive和sparkhive与hadoop的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。