HBase 和 Hive 的差別是什么,各自適用在什么場景中?Spark SQL能做什么?


 

================================================================================================
 

HBase 和 Hive 的差別是什么,各自適用在什么場景中?

 
================================================================================================



結論:Hbase和Hive在大數據架構中處在不同位置,Hbase主要解決實時數據查詢問題,Hive主要解決數據處理和計算問題,一般是配合使用。

一、區別:

  1. Hbase: Hadoop database 的簡稱,也就是基於Hadoop數據庫,是一種NoSQL數據庫,主要適用於海量明細數據(十億、百億)的隨機實時查詢,如日志明細、交易清單、軌跡行為等。
  2. Hive:Hive是Hadoop數據倉庫,嚴格來說,不是數據庫,主要是讓開發人員能夠通過SQL來計算和處理HDFS上的結構化數據,適用於離線的批量數據計算。
  • 通過元數據來描述Hdfs上的結構化文本數據,通俗點來說,就是定義一張表來描述HDFS上的結構化文本,包括各列數據名稱,數據類型是什么等,方便我們處理數據,當前很多SQL ON Hadoop的計算引擎均用的是hive的元數據,如Spark SQL、Impala等;
  • 基於第一點,通過SQL來處理和計算HDFS的數據,Hive會將SQL翻譯為Mapreduce來處理數據

二、關系

在大數據架構中,Hive和HBase是協作關系,數據流一般如下圖:

  1. 通過ETL工具將數據源抽取到HDFS存儲;
  2. 通過Hive清洗、處理和計算原始數據;
  3. Hive清洗處理后的結果,如果是面向海量數據隨機查詢場景的可存入Hbase
  4. 數據應用從HBase查詢數據;

 

 
 
 
================================================================================================
 

Spark SQL能做什么

 
================================================================================================
 

根據ETL(數據的抽取、轉換、加載)的三個過程來講解一下Spark SQL的作用。


(1)抽取(Extract):Spark SQL可以從多種文件系統(HDFS、S3. 本地文件系統等)、關系型數據庫(MySQL、Oracle、PostgreSQL等)或NoSQL數據庫(Cassandra、HBase、Druid等)中獲取數據,Spark SQL支持的文件類型可以是CSV、JSON、XML、Parquet、ORC、Avro等。得益於Spark SQL對多種數據源的支持,Spark SQL能從多種渠道抽取人們想要的數據到Spark中。


(2)轉換(Transform):我們常說的數據清洗,比如空值處理、拆分數據、規范化數據格式、數據替換等操作。Spark SQL能高效地完成這類轉換操作。


(3)加載(Load):在數據處理完成之后,Spark SQL還可以將數據存儲到各種數據源(前文提到的數據源)中。


如果你以為Spark SQL只能做上面這些事情,那你就錯了。Spark SQL還可以作為一個分布式SQL查詢引擎通過JDBC或ODBC或者命令行的方式對數據庫進行分布式查詢。Spark SQL中還有一個自帶的Thrift JDBC/ODBC服務,可以用Spark根目錄下的sbin文件夾中的start-thriftserver.sh腳本啟動這個服務。Spark中還自帶了一個Beeline的命令行客戶端,讀者可以通過這個客戶端連接啟動的Thrift JDBC/ODBC,然后提交SQL。

 

如果你以為Spark SQL能做的只有這些,那你就錯了。Spark SQL還可以和Spark的其他模塊搭配使用,完成各種各樣復雜的工作。比如和Streaming搭配處理實時的數據流,和MLlib搭配完成一些機器學習的應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM