① hive和sparksql的區別
歷史上存在的原理,以前都是使用hive來構建數據倉庫,所以存在大量對hive所管理的數據查詢的需求。而hive、shark、sparlSQL都可以進行hive的數據查詢。shark是使用了hive的sql語法解析器和優化器,修改了執行器,使之物理執行過程是跑在spark上;而sparkSQL是使用了自身的語法解析器、優化器和執行器,同時sparkSQL還擴展了介面,不單單支持hive數據的查詢,可以進行多種數據源的數據查詢。
② sparkSQL用jdbc連接hive和用元數據連接hive的區別,各自優缺點
spark on hive : 是spark 通過spark-sql 使用hive 語句操作hive ,底層運行的還是 spark rdd.
*(1)就是通過sparksql,載入hive的配置文件,獲取到hive的元數據信息
* (2)spark sql獲取到hive的元數據信息之後就可以拿到hive的所有表的數據
* (3)接下來就可以通過spark sql來操作hive表中的數據
hive on spark: 是hive 等的執行引擎變成spark , 不再是maprece. 相對於上一項,這個要實現責麻煩很多, 必須重新編譯你的spark. 和導入jar包,
③ spark SQL和hive到底什麼關系
Hive是一種基於HDFS的數據倉庫,並且提供了基於SQL模型的,針對存儲了大數據的數據倉庫,進行分布式交互查詢的查詢引擎。
SparkSQL並不能完全替代Hive,它替代的是Hive的查詢引擎,SparkSQL由於其底層基於Spark自身的基於內存的特點,因此速度是Hive查詢引擎的數倍以上,Spark本身是不提供存儲的,所以不可能替代Hive作為數據倉庫的這個功能。
SparkSQL相較於Hive的另外一個優點,是支持大量不同的數據源,包括hive、json、parquet、jdbc等等。SparkSQL由於身處Spark技術堆棧內,基於RDD來工作,因此可以與Spark的其他組件無縫整合使用,配合起來實現許多復雜的功能。比如SparkSQL支持可以直接針對hdfs文件執行sql語句。
④ hive查詢語言和sql的區別
Hive是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化載入(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapRece 開發者的開發自定義的 mapper 和 recer 來處理內建的 mapper 和 recer 無法完成的復雜的分析工作。
Hive 採用類SQL 的查詢方式,將SQL 查詢轉換為MapRece 的job 在Hadoop集群上執行
⑤ Hive和傳統資料庫有什麼區別和聯系
Hive與傳統的關系型資料庫有很多類似的地方,例如對SQL的支持。但是其基於HDFS與MapRece的事實使得它與傳統的資料庫在很多方面有很大的不同,在一些特性的支持下也受到底層架構的限制,但是這些限制隨著版本迭代正在不斷被消除,使得Hive看起來越來越像傳統的資料庫。
⑥ 資料庫裡面mysql和hive區別是什麼
1.查詢語言不同:hql/sql
2.數據存儲位置不同:hdfs/資料庫系統
3.數據格式:可自定義/資料庫系統定義格式
4.數據更新:Hive不支持數據更新/mysql支持數據更新update
⑦ hive sql 數據類型 有什麼特點
思路當我們在終端下執行命令「hive」後,會看到有如下輸出:Hive有會話(Session)的概念,而這次會話中的所有日誌消息將會輸出到這個日誌文件中,包含SQL語句的執行日誌,查看這個日誌文件可以看到以下信息:
⑧ Hive 和資料庫的異同
1.
查詢語言。由於 SQL 被廣泛的應用在數據倉庫中,因此,專門針對 Hive 的特性設計了類 SQL 的查詢語言 HQL。熟悉 SQL 開發的開發者可以很方便的使用 Hive 進行開發。
2. 數據存儲位置。Hive 是建立在 Hadoop 之上的,所有 Hive 的數據都是存儲在 HDFS 中的。而資料庫
則可以將數據保存在本地文件系統中。
3. 數據格式。Hive 中沒有定義專門的數據格式,數據格式可以由用戶指定,用戶定義數據格式需要指定三
個屬性:列分隔符(通常為空格、」\t」、」\x001″)、行分隔符(」\n」)以及讀取文件數據的方法(Hive 中默認有三個文件格式 TextFile,SequenceFile 以及 RCFile)。由於在載入數據的過程中,不需要從用戶數據格式到 Hive 定義的數據格式的轉換,因此,Hive 在載入的過程中不會對數據本身進行任何修改,而只是將數據內容復制或者移動到相應的 HDFS 目錄中。而在資料庫中,不同的資料庫有不同的存儲引擎,定義了自己的數據格式。所有數據都會按照一定的組織存儲,因此,資料庫載入數據的過程會比較耗時。
4. 數據更新。由於 Hive 是針對數據倉庫應用設計的,而數據倉庫的內容是讀多寫少的。因此,Hive 中不
支持對數據的改寫和添加,所有的數據都是在載入的時候中確定好的。而資料庫中的數據通常是需要經常進行修改的,因此可以使用 INSERT INTO ... VALUES 添加數據,使用 UPDATE ...
SET 修改數據。
5. 索引。之前已經說過,Hive 在載入數據的過程中不會對數據進行任何處理,甚至不會對數據進行掃描,
因此也沒有對數據中的某些 Key 建立索引。Hive 要訪問數據中滿足條件的特定值時,需要暴力掃描整個數據,因此訪問延遲較高。由於 MapRece 的引入, Hive 可以並行訪問數據,因此即使沒有索引,對於大數據量的訪問,Hive 仍然可以體現出優勢。資料庫中,通常會針對一個或者幾個列建立索引,因此對於少量的特定條件的數據的訪問,資料庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。
6. 執行。Hive 中大多數查詢的執行是通過 Hadoop 提供的 MapRece 來實現的(類似 select * from tbl
的查詢不需要 MapRece)。而資料庫通常有自己的執行引擎。
7. 執行延遲。之前提到,Hive 在查詢數據的時候,由於沒有索引,需要掃描整個表,因此延遲較高。另外
一個導致 Hive 執行延遲高的因素是 MapRece 框架。由於 MapRece 本身具有較高的延遲,因此在利用 MapRece 執行 Hive 查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即數據規模較小,當數據規模大到超過資料庫的處理能力的時候,Hive 的並行計算顯然能體現出優勢。
8. 可擴展性。由於 Hive 是建立在 Hadoop 之上的,因此 Hive 的可擴展性是和 Hadoop 的可擴展性是
一致的(世界上最大的 Hadoop 集群在 Yahoo!,2009年的規模在 4000 台節點左右)。而資料庫由於 ACID 語義的嚴格限制,擴展行非常有限。目前最先進的並行資料庫 Oracle 在理論上的擴展能力也只有 100 台左右。
9. 數據規模。由於 Hive 建立在集群上並可以利用 MapRece 進行並行計算,因此可以支持很大規模的
數據;對應的,資料庫可以支持的數據規模較小。
⑨ HQL和SQL的區別
hql是面向對象的
。
其實還是轉成了sql語句
hql在資料庫通用,切換資料庫方言就可以
sql在不同資料庫中語法有些不同
還是sql比較靈活一些。。
⑩ 與sql對比 hiveql具有哪些特點
Hive 的設計特點如下。
● 支持索引,加快數據查詢。
● 不同的存儲類型,例如,純文本文件、HBase 中的文件。
● 將元數據保存在關系資料庫中,大大減少了在查詢過程中執行語義檢查的時間。
● 可以直接使用存儲在Hadoop 文件系統中的數據。
● 內置大量用戶函數UDF 來操作時間、字元串和其他的數據挖掘工具,支持用戶擴展UDF 函數來完成內置函數無法實現的操作。