Apache Drill與Apache Spark —哪種SQL查詢引擎更適合您?

最初在這裡發佈:https://blog.contactsunny.com/tech/apache-drill-vs-apache-spark-which-sql-query-engine-is-better-for-you

Apache Drill與Apache Spark —哪種SQL查詢引擎更適合您?

如果您在大數據,數據科學或BI領域,則可能聽說過Apache Spark。 你們中的一些人可能也聽說過Apache Drill,而其中的一小部分人實際上已經使用過它。 我最近發現了Apache Drill。 但是從那時起,我開始喜歡它所提供的功能。 但是當我瀏覽Apache Drill的功能時,我想知道的第一件事是,這與Apache Spark有何不同? 我可以互換使用兩者嗎? 我做了一些研究,找到了答案。 在這裡,我將為我自己,也許也為你們回答這些問題。

總而言之,如果您想進行大量的數學,數據轉換和機器學習,則最好堅持使用Apache Spark。 如果不是這種情況,而您只想運行一些聚合查詢來分析數據,則可以使用Apache Drill。

有趣的是,Drill支持JDBC驅動程序,Spark可以在SparkSQL中使用JDBC驅動程序來獲取數據。 因此,如果您希望對要帶入Spark的數據進行精細控制,並希望對該數據運行復雜的轉換,則可以在Spark中使用Drill將數據帶入Spark。 這種組合對於大多數應用程序應該足夠了。

非常重要的一點是要了解兩者之間存在根本差異,它們的實現方式和功能之間存在根本差異。

藉助Apache Drill,我們編寫了SQL查詢以從各種來源(例如SQL數據庫,MongoDB,AWS S3,Apache Kafka,JSON文件等)中獲取數據。 但是,使用Apache Spark,我們編寫了"類似於SQL"的查詢,以從各種數據源中獲取數據。 此處的區別是Drill是ANSI SQL:2003查詢引擎,具有比傳統SQL查詢引擎更強大的功能。 另一方面,Apache Spark僅以有限的方式支持一部分SQL查詢。 Spark是一個通用的計算引擎,它支持類似SQL的查詢,以獲取運行這些計算所需的數據。 Spark還具有要在其上運行查詢的各種存儲服務的驅動程序。

SparkSQL支持的數據源列表也很長,但沒有Drill的長。 使用BI工具已經有足夠長的時間的人會發現自己在家中使用SQL查詢。 將這些知識帶到Apache Drill,將使他們能夠從可能不熟悉的數據源中查詢數據,例如NoSQL數據庫,Parquet文件,S3文件等。此類人員可以使用Apache Drill運行復雜的聚合查詢; 在大多數情況下,他們都能獲得所需的結果。 關於SparkSQL,不能說相同的話。

如果您要在Spark中處理數據,並且希望通過一些簡單的連接和條件從外部源中獲取數據,SparkSQL是理想的選擇。 將數據放入Spark數據集中後,即可應用轉換並執行操作。

這兩種工具處理基礎數據的方式完全不同。 Apache Drill能夠執行在多個數據源上運行的複雜查詢,並且能夠將這些查詢下推到相關數據源的本機驅動程序。 它將數據內部映射為JSON格式,並且與JSON配合使用的功能使Drill的方式比Spark更加靈活。

Drill還使用諸如FLATTEN和KVGEN之類的命令擴展了ANSI SQL查詢,這使得處理簡單甚至複雜的JSON數據更加容易。 而且由於Drill內部使用JSON,因此Drill可以即時發現模式。


(本文翻譯自Sunny Srinidhi的文章《Apache Drill vs. Apache Spark — Which SQL query engine is better for you?》,參考:https://towardsdatascience.com/apache-drill-vs-apache-spark-which-sql-query-engine-is-better-for-you-2a43f381bcd7)


分享到:


相關文章: