spark sql合并小文件_如何比较Hive,Spark,Impala和Presto?
Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera開發(fā)和交付。在選擇這些數據庫來管理數據庫時,許多Hadoop用戶會感到困惑。Presto是一個開放源代碼的分布式SQL查詢引擎,旨在運行甚至PB級的SQL查詢,它是由Facebook人設計的。
Spark SQL是一個分布式內存計算引擎,它的內存處理能力很高。Hive也由Apache作為查詢引擎引入,這使數據庫工程師的工作更加輕松,他們可以輕松地在結構化數據上編寫ETL作業(yè)。在發(fā)布Spark之前,Hive被認為是最快速的數據庫之一。
現在,Spark還支持Hive,也可以通過Spike對其進行訪問。就Impala而言,它也是一個基于Hadoop設計的SQL查詢引擎。Impala查詢不會轉換為mapreduce作業(yè),而是本地執(zhí)行。
這是對Hive,Spark,Impala和Presto的簡要介紹。在本文中,我們會講解這些SQL查詢引擎的功能描述,并根據它們的屬性介紹這些引擎之間的差異。
Hive,Spark,Impala和Presto之間的區(qū)別
讓我們看一下所有這些功能特性的描述:
什么是Hive?
用于查詢和管理大型數據集的Apache Hive數據倉庫軟件設施將分布式存儲用作其后端存儲系統(tǒng)。它建立在Apache之上。該工具是在Hadoop文件系統(tǒng)或HDFS的頂部開發(fā)的。Hadoop可簡化以下任務:
- 臨時查詢
- 數據封裝
- 龐大的數據集和分析
Hive特征
- 在Hive中,首先創(chuàng)建數據庫表,然后將數據加載到這些表中
- Hive旨在管理和查詢存儲表中的結構化數據
- Map Reduce沒有可用性和優(yōu)化功能,但是Hive具有這些功能。查詢優(yōu)化可以高效地執(zhí)行查詢
- Hive的靈感語言降低了Map Reduce編程的復雜性,并重用了其他數據庫概念,例如行、列、模式等。
- Hive使用目錄結構進行數據分區(qū)并提高性能。
- Hive的大多數交互都是通過CLI或命令行界面進行的,并且HQL或Hive查詢語言用于查詢數據庫
- Hive支持四種文件格式,即TEXTFILE,ORC,RCFILE和SEQUENCEFILE
Hive的三個核心部分
- Hive客戶
- Hive服務
- Hive存儲和計算
通過不同的驅動程序,Hive與各種應用程序進行通信。與基于Java的應用程序一樣,它使用JDBC驅動程序,對于其他應用程序,它使用ODBC驅動程序。Hive客戶端和驅動程序然后再次與Hive服務和Hive服務器通信。Hive客戶端可以通過Hive服務解決其查詢。
CLI或命令行界面在這里就像Hive服務一樣,用于數據定義語言操作。來自不同應用程序的請求由驅動程序處理,并轉發(fā)到不同的Meta商店和現場系統(tǒng)進行進一步處理。
Hive服務(如作業(yè)客戶端,文件系統(tǒng)和元存儲)與Hive存儲進行通信,并用于執(zhí)行以下操作:
- 在Hive中創(chuàng)建并存儲了表的元數據信息,也稱為“元存儲數據庫”
- 數據和查詢結果加載到表中,這些表以后存儲在HDFS上的Hadoop集群中
配置單元在本地模式或地圖縮小模式下執(zhí)行。如果數據大小較小或處于偽模式下,則使用Hive的本地模式可以提高處理速度。而對于大量數據或用于多節(jié)點處理,則使用Hive的Map Reduce模式,以提供更好的性能。
什么是Impala?
Impala是一個大規(guī)模并行處理引擎,是一個開源引擎。它要求將數據庫存儲在運行Apache Hadoop的計算機群集中。這是一個SQL引擎,由Cloudera在2012年推出。
Hadoop程序員可以以出色的方式在Impala上運行其SQL查詢,它被認為是一種高效的引擎,因為它在處理之前不會移動或轉換數據,該引擎可以輕松實現。Impala的數據格式、元數據、文件安全性和資源管理與MapReduce相同。
它具有Hadoop的所有特質,還可以支持多用戶環(huán)境。以下列出了使Impala非常有用的兩個最有用的品質:
1)列存儲
2)樹結構
Impala的一些流行功能:
- 支持Apache HBase存儲和HDFS或Hadoop分布式文件系統(tǒng)
- 支持Kerberos身份驗證或Hadoop安全性
- 它可以輕松讀取Apache Hive的元數據,SQL語法和ODBC驅動程序
- 它可以識別Hadoop文件格式,RCFile,Parquet,LZO和SequenceFile
- Apache Sentry基于角色的授權。
Impala在2年內崛起,已成為最重要的SQL引擎之一。現在,甚至Amazon Web Services和MapR都已列出了對Impala的支持。
什么是Spark?
Apache Spark是最受歡迎的QL引擎之一,它是通用數據處理引擎,在核心火花數據處理的頂部還有很多其他庫,例如圖形計算、機器學習和流處理,這些庫可以在應用程序中一起使用。Spark支持以下語言,例如Spark、Java和R應用程序開發(fā)。
Spark應用程序運行幾個獨立的進程,這些進程由驅動程序中的SparkSession對象協(xié)調,簇或資源管理器也將該任務分配給工作人員。任務將其工作單位應用于數據集、結果,創(chuàng)建了一個新的數據集分區(qū),最終結果可以存儲并保存在磁盤上,也可以發(fā)送回驅動程序。
Spark可以處理PB級的數據,并以分布式方式在成千上萬個群集中進行處理,這些群集分布在幾個物理和虛擬群集之間。Spark被用于多種應用,例如:
- 流處理
- 機器學習
- 互動分析
- 資料整合
由于其有益的功能(例如速度,簡單性和支持),Spark被許多用戶選擇。可以通過一組豐富的API來訪問Spark的功能,這些API專門用于快速,輕松地與數據進行交互。Apache Spark社區(qū)龐大且支持您快速,快速地獲得查詢的答案。
什么是Presto?
Presto是一個分布式的開源SQL查詢引擎,用于運行交互式分析查詢。它可以處理從GB到PB的任何大小的查詢。Presto是由Facebook人設計的。它旨在加速商業(yè)數據倉庫查詢處理。它可以擴大與Facebook相匹配的組織規(guī)模。
Presto在一組機器上運行。Presto設置包括多個工作人員和協(xié)調員。Presto查詢由其客戶提交給協(xié)調器。然后,Presto協(xié)調器分析查詢并創(chuàng)建其執(zhí)行計劃。稍后,處理過程將分配給工人。
在處理PB級或TB級數據時,用戶將不得不使用大量工具與HDFS和Hadoop進行交互。Presto可以幫助用戶通過Hive和Pig等MapReduce作業(yè)管道查詢數據庫。Presto可以幫助用戶處理不同類型的數據源,例如Cassandra和許多其他傳統(tǒng)數據源。
Presto的功能
- 可以幫助從其駐留位置查詢數據,例如Hive,Cassandra,專有數據存儲或關系數據庫。
- 可以合并來自多個數據源的單個查詢的數據
- Presto的響應時間非常快,通過昂貴的商業(yè)解決方案,他們可以快速解決查詢
- 它使用矢量化的柱狀處理
- Presto具有流水線執(zhí)行
- 其架構簡單而廣泛
Facebook每天都使用Presto在一天中運行PB級數據。這可能包括幾個內部數據存儲。它還支持為查詢提供數據的可插拔連接器。Presto支持以下連接器:
- TPC-H
- Cassandra
- Hadoop /Hive
就Presto應用程序而言,它支持Facebook,Teradata和Airbnb等許多工業(yè)應用程序。Presto支持標準的ANSI SQL,這對于數據分析人員和開發(fā)人員而言非常容易。Presto是用Java開發(fā)和編寫的,但沒有與Java代碼相關的問題,例如:
內存分配和垃圾回收。Presto具有Hadoop友好的連接器體系結構。
推薦用法
就這些查詢引擎的用途而言,您可以考慮以下幾點:
對于任何類似BI的交互式工作負載,Impala可能是您的最佳選擇。由于Impala查詢的延遲最低,如果是為了減少查詢延遲,您可以果斷選擇Impala,尤其是對于并發(fā)執(zhí)行。
但對于低延遲和多用戶支持要求,Hive也是不錯的選擇。選擇Hive,僅出于您的ETL或批處理要求。但Hive不會減少太多查詢處理所需的時間,因此它可以成為BI的合適選擇。
Spark SQL,用戶可以有選擇地使用SQL構造為Spark管道編寫查詢。Spark SQL重用Hive元存儲和前端,與現有的Hive查詢,數據和UDF完全兼容。通過基于成本的查詢優(yōu)化器,代碼生成器和列式存儲Spark查詢的執(zhí)行速度得以提高。
Presto在BI類型查詢中處于領先地位,與主要用于性能豐富查詢的Spark不同,Presto對并發(fā)查詢工作負載的支持至關重要。因此從并發(fā)查詢執(zhí)行和增加的工作量的角度出發(fā),您可以使用它。
選擇合適的數據庫或SQL引擎完全取決于您的要求。在這里,我們列出了所有SQL引擎的一些常用和有益的功能。您可以選擇Presto或Spark或Hive或Impala。數據庫的選擇取決于技術規(guī)格和功能的可用性。
寫在最后
如果你不確定數據庫或SQL查詢引擎的選擇,那只需進行詳細比較它們特定的屬性和登記功能,你就能更輕松地選擇合適的數據庫或SQL引擎了。
青牛:Hadoop與 Spark —選擇正確的大數據框架
總結
以上是生活随笔為你收集整理的spark sql合并小文件_如何比较Hive,Spark,Impala和Presto?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python用缩进来标明代码的层次关系_
- 下一篇: 如何在android studio中设置