[大数据]Hive:Spark,我发现你有小秘密啊~

Posted 阿布的进击

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[大数据]Hive:Spark,我发现你有小秘密啊~相关的知识,希望对你有一定的参考价值。


01

请问,你的梦想是什么?

在大数据公司中,任何一家公司都不会只使用一个框架吧?

skr,skr~~

那我们今天就来聊一段 Hive 与 Spark的爱恨情仇

就像

在一些场景中,需要将外部的数据导入到Hive表中,然后再对这些数据进行额外的处理,提供给不同的部门使用。


当导完数据之后,需要用到Spark进行后续的处理时,发现数据多了一条


Spark:Omg,我顶你个肺~


这种情况的排查,我们需要从数据源头一步步检验,找出来这突然多出来的数据究竟是何方妖怪,想想是一件很恐怖的事情


Hive:同志,冷静


数据重复?索引重复?


俗话说不会面向度娘编程的Hive不是好Spark,在拔掉了两根头发之后发现问题:表头!



02

我不能干涉被测试框架的客观性



环境模拟



Centos 7 Spark 2.4.4 scala 2.11.8 JDK 1.8 Hive 1.2.2 hadoop 2.7.3

创建测试表:testTab


create table if not exists testTab( id stringname string ) row format delimited fields terminated by ","tblproperties("skip.header.line.count"="1");

测试数据:testData.txt


id,name 1,xzheng 2,bbeir 3,hive 4,spark

加载数据到Hive表中:


load data local inpath "/usr/local/src/testData.txt" overwrite into table testTab;

在Hive中查询:


select * from testTab;+----------------------+------------------------+--+| testTab.id | testTab.name |+----------------------+------------------------+--+| 1 | xzheng ||  2                    | bbeir                  || 3 | hive ||  4                    | spark                  |+----------------------+------------------------+--+

Spark SQL查询:


+---+------+|id |name |+---+------+|id |name || 1 |xzheng||2 |bbeir || 3 |hive ||4 |spark |+---+------+



03

药不能停、药不能停



解决方法-1:

在原始表的基础上,再建立一个备份表,通过Spark Sql查询结果正确


create table if not exists testTab_2row format delimited fields terminated by "," as  select * from testTab;

解决方法-2:

通过spark的read函数,直接操作存在hdfs上的原始数据,然后再建表


scala> val df = spark.read.format("csv").option("path","hdfs://path_to_hdfs/testData.txt").option("header",true).option("delimiter",",").loadscala> df.show()+---+------+|id |name |+---+------+|1  |xzheng|| 2 |bbeir ||3  |hive  || 4 |spark |+---+------+



04

我的青春真实存在过



Hive在创建表的时候可以通过增加:tblproperties("skip.header.line.count"="1") 语句来忽略第一行。

skip.heaer.line.count :跳过文件行首多少行

skip.footer.line.count :跳过文件行尾多少行


Hive中设置的忽略表头在Spark中不生效!

Hive中设置的忽略表头在Spark中不生效!

Hive中设置的忽略表头在Spark中不生效!



05

你人性深处隐藏了很多小秘密



小秘密:

https://issues.apache.org/jira/browse/HIVE-5795


https://issues.apache.org/jira/browse/SPARK-11374


有不同看法,下方留言讨论,别让你的小秘密淹没在未知里

我也该咽下这根美好的鱼骨头了



个人站点:www.TopAbu.com

那我现在跟你讲国语了:

点点“在看”,你最好看!

点点”分享“,朋友也爽!

以上是关于[大数据]Hive:Spark,我发现你有小秘密啊~的主要内容,如果未能解决你的问题,请参考以下文章

在 Hive/Spark 中高效查找大数据表的所有相关子范围

一文教你看懂大数据的技术生态圈:Hadoop,hive,spark

如何用形象的比喻描述大数据的技术生态?Hadoop、Hive、Spark 之间是啥关系?

一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

我用 Python 爬取微信好友,最后发现一个大秘密

我用 Python 爬取微信好友,最后发现一个大秘密