hql 和 spark sql的區別

一、什麼是 Spark SQL? (官方定義)

Spark SQL

* A Spark module for structured data processing(known set of fields for each record - schema) ;

1. Spark SQL是Spark中專門用來處理結構化數據(每一行數據都遵循Schema信息 —— 建表時表的字段及其                                  類型)的一個模塊;

* Provides DataFrames/Dataset as an abstraction for distributed data processing ;

2. 提供了 DataFrame/Dataset 的對分佈式數據處理的基本抽象;

* Acts as a distributed SQL engine ;

3. 其實之上是一個分佈式的 SQL 引擎。

二、什麼是 Hive? (官方定義)

Hive

* The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL.

1. 數據倉庫,能使用 SQL 讀取、寫入和管理存在於分佈式存儲架構上的大數據集;

* Structure can be projected onto data already in storage.

2. 結構可以映射到已經存儲的數據上;

* A command line tool and JDBC driver are provided to connect users to Hive.

3. 用戶連接 Hive 可以使用命令行工具和 JDBC 驅動。

三、兩者的區別

都支持ThriftServer服務,爲JDBC提供解決方案,區別如下:

Spark SQL

=> 是Spark的一個庫文件;

=> Spark SQL 元數據可有可無;

=> Spark SQL 中 schema 是自動推斷的;

=> 支持標準 SQL 語句,也支持 HQL 語句等(可以用普通話、方言來對比理解);

=> 從開發角度來講,即支持SQL方式開發,也支持HQL開發,還支持函數式編程(DSL)實現SQL語句。

Hive

=> 是一個框架;

=> Hive中必須有元數據,一般由 MySql 管理,必須開啓 metastore 服務;

=> Hive 中在建表時必須明確使用 DDL 聲明 schema;

=> 只支持 HQL 語句。

 

Hive:處理海量數據,比如一個月、一個季度、一年的數據量,依然可以處理,雖然很慢;

Spark SQL:這種情況下 Spark SQL 不支持,無法處理;

所以在企業中,Hive 和 Spark SQL 能夠共存,互爲彌補。

原文鏈接:https://blog.csdn.net/weixin_44196083/article/details/92404776

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章