成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hive 和 Spark的愛恨情仇恩怨交織

大數據 Spark
spark是一個通用的處理大規模數據的分析引擎,即 spark 是一個計算引擎,而不是存儲引擎,其本身并不負責數據存儲。

[[392367]]

本文轉載自微信公眾號「明哥的IT隨筆」,作者IT明哥。轉載本文請聯系明哥的IT隨筆公眾號。  

最近在面試一些應聘大數據崗位的技術小伙伴時,發現不少朋友對業界 所謂的hive on spark和spark on hive分不太清楚;同時在日常工作中,也因為對這兩個技術術語的理解不太一致,影響了進一步的技術交流。所以在這里,明哥想跟大家聊聊 hive 和 spark的愛恨情仇。

hive的定位

hive 官網有描述,“Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL.”,hive的定位是數據倉庫,其提供了通過 sql 讀寫和管理分布式存儲中的大規模的數據,即 hive即負責數據的存儲和管理(其實依賴的是底層的hdfs文件系統或s3等對象存儲系統),也負責通過 sql來處理和分析數據。所以說,hive只用來處理結構化數據,且只提供了sql的方式來進行分析處理。而且一般來說,hive只能對數據進行批處理。(當使用hive 的hbase映射表時,有一定的實時能力;同時,flink社區也在嘗試將hive實時化-這里的實時化指小時級別的實時化,達不到分鐘級別)。

spark的定位

正如 spark官網所說,“Apache spark is a unified analytics engine for large-scale data processing.”,spark是一個通用的處理大規模數據的分析引擎,即 spark 是一個計算引擎,而不是存儲引擎,其本身并不負責數據存儲。其分析處理數據的方式,可以使用sql,也可以使用java,scala, python甚至R等api;其分析處理數據的模式,既可以是批處理,也可以是流處理;而其分析處理的數據,可以通過插件的形式對接很多數據源,既可以是結構化的數據,也可以是半結構化甚至分結構化的數據,包括關系型數據庫RDBMS,各種nosql數據庫如hbase, mongodb, es等,也包括文件系統hdfs,對象存儲oss, s3 等等。

hive和spark: 碰撞出的愛恨交織恩怨情仇的火花

通過以上說明,我們可以看到spark和hive本質上是沒有關系的,兩者可以互不依賴。但是在企業實際應用中,經常把二者結合起來使用。而業界spark和hive結合使用的方式,主要有以下三種:

  • hive on spark。在這種模式下,數據是以table的形式存儲在hive中的,用戶處理和分析數據,使用的是hive語法規范的 hql (hive sql)。但這些hql,在用戶提交執行時(一般是提交給hiveserver2服務去執行),底層會經過hive的解析優化編譯,最后以spark作業的形式來運行。事實上,hive早期只支持一種底層計算引擎,即mapreduce,后期在spark 因其快速高效占領大量市場后,hive社區才主動擁抱spark,通過改造自身代碼,支持了spark作為其底層計算引擎。目前hive支持了三種底層計算引擎,即mr, tez和spark.用戶可以通過set hive.execution.engine=mr/tez/spark來指定具體使用哪個底層計算引擎。
  • spark on hive。上文已經說到,spark本身只負責數據計算處理,并不負責數據存儲。其計算處理的數據源,可以以插件的形式支持很多種數據源,這其中自然也包括hive。當我們使用spark來處理分析存儲在hive中的數據時,這種模式就稱為為 spark on hive。這種模式下,用戶可以使用spark的 java/scala/pyhon/r 等api,也可以使用spark語法規范的sql ,甚至也可以使用hive 語法規范的hql 。而之所以也能使用hql,是因為 spark 在推廣面世之初,就主動擁抱了hive,通過改造自身代碼提供了原生對hql包括hive udf的支持(其實從技術細節來將,這里把hql語句解析為抽象語法書ast,使用的是hive的語法解析器,但后續進一步的優化和代碼生成,使用的都是spark sql 的catalyst),這也是市場推廣策略的一種吧。
  • spark + spark hive catalog。這是spark和hive結合的一種新形勢,隨著數據湖相關技術的進一步發展,這種模式現在在市場上受到了越來越多用戶的青睞。其本質是,數據以orc/parquet/delta lake等格式存儲在分布式文件系統如hdfs或對象存儲系統如s3中,然后通過使用spark計算引擎提供的scala/java/python等api或spark 語法規范的sql來進行處理。由于在處理分析時針對的對象是table, 而table的底層對應的才是hdfs/s3上的文件/對象,所以我們需要維護這種table到文件/對象的映射關系,而spark自身就提供了 spark hive catalog來維護這種table到文件/對象的映射關系。注意這里的spark hive catalog,其本質是使用了hive 的 metasore 相關 api來讀寫表到文件/對象的映射關系(以及一起其他的元數據信息)到 metasore db如mysql, postgresql等數據庫中。(由于spark編譯時可以把hive metastore api等相關代碼一并打包到spark的二進制安裝包中,所以使用這種模式,我們并不需要額外單獨安裝hive)。

 

責任編輯:武曉燕 來源: 明哥的IT隨筆
相關推薦

2022-09-02 12:13:22

TCPUDP場景

2025-01-03 09:39:04

2019-01-29 09:18:00

開源代碼GitHub

2022-05-13 09:47:28

Docker容器

2017-10-16 16:00:08

云計算成本云端

2020-11-24 10:13:20

測試開發管理

2019-05-15 15:10:12

Tomcat Session Cookie

2024-08-07 08:22:27

2011-05-30 13:29:06

2024-06-05 11:06:22

Go語言工具

2024-06-07 00:09:50

2020-03-11 10:26:51

開發者技能工具

2025-01-13 00:00:35

2013-02-20 10:00:16

微軟CodePlexGitHub

2020-04-09 15:26:55

間諜軟件NSOFacebook

2022-05-07 07:43:07

Redis存儲系統數據庫

2021-06-16 06:48:06

接口微信

2017-06-15 13:29:12

AkkaSpark異步

2015-11-24 15:13:15

2018-10-12 15:20:19

前端css3css
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲国产 | 黄色三级毛片 | 日韩精品无码一区二区三区 | 中文字幕精品一区二区三区精品 | 亚洲高清视频一区 | 亚洲一区视频 | 久久高清 | 欧美精选一区二区 | av中文字幕网 | 在线伊人 | 爱爱免费视频网站 | 日本午夜在线视频 | 国产精品嫩草影院精东 | 一级毛片在线看 | 久久精品伊人 | 在线观看成人小视频 | 欧美乱码精品一区二区三区 | 欧美日韩精品影院 | 天天干狠狠操 | 成人精品鲁一区一区二区 | 99久久精品国产一区二区三区 | 日韩精品视频在线 | 草久在线 | 精品国产乱码久久久久久蜜退臀 | 国内激情av片 | 亚洲一二三区免费 | 91精品国产乱码久久久久久久久 | 中文字幕av亚洲精品一部二部 | 99国产精品久久久 | 亚洲成av人片在线观看 | 欧美一区二区三区四区在线 | 免费中文字幕 | 天天天天天天天干 | 日本欧美国产在线 | 国产精品久久久久久婷婷天堂 | 日韩电影免费在线观看中文字幕 | 91精品观看 | 欧美精品一区二区在线观看 | 欧美日韩激情 | 久久久www成人免费无遮挡大片 | 亚洲一区国产精品 |