impala 和 kudu 小記


1. impala(官網

  • 實時交互SQL大數據查詢工具
  • 它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數據。
  • Impala的最大特點也是最大賣點就是它的快速。
  • Impala完全拋棄了Hive+MapReduce這個不太適合做SQL查詢的緩慢范式
  • 通過使用與商用並行關系數據庫中類似的分布式查詢引擎,可以直接從HDFS或HBase中用SELECT、JOIN和統計函數查詢數據,從而大大降低了延遲

2. Hive 與 impala

  • Impala與Hive都是構建在Hadoop之上的數據查詢工具各有不同的側重適應面
  • 但從客戶端使用來看Impala與Hive有很多的共同之處,如數據表元數據、ODBC/JDBC驅動、SQL語法、靈活的文件格式、存儲資源池、用戶界面(Hue Beeswax)等
  • Hive適合於長時間的批處理查詢分析,而Impala適合於實時交互式SQL查詢

可以先使用hive進行數據轉換處理,之后使用Impala在Hive處理后的結果數據集上進行快速的數據分析。

官方文檔

3. impala 和hive 語法和數據基本相通

1)invalidate metadata;

    可以把hive元數據(數據)刷新同步過來

2)更多sql不同參考

3)impala的jdbc接口

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UpdateMeta
{
    static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver";
    static String CONNECTION_URL = "jdbc:impala://192.168.0.22:21050/db_1";     ###  jdbc:impala://域名/數據庫

    public static void main(String[] args)
    {
        Connection con = null;
        ResultSet rs = null;
        PreparedStatement ps = null;

        try
        {
            Class.forName(JDBC_DRIVER);
            con = DriverManager.getConnection(CONNECTION_URL);
            ps = con.prepareStatement("select max(dtime),count(dtime) from achi");
            rs = ps.executeQuery();
            while (rs.next())
            {
                System.out.println(rs.getString(1) + '\t' + rs.getLong(2));
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        } finally
        {
            //關閉rs、ps和con
        }
    }
}

  

4 CDH

hadoop是一個開源項目,所以很多公司在這個基礎進行商業化,Cloudera對hadoop做了相應的改變

Cloudera公司的發行版,我們將該版本稱為CDH(Cloudera Distribution Hadoop)

 

5. kudu

6. parquet 表

1)面向分析型業務的列式存儲格式;既可以支持關系型數據,也可以支持嵌套的數據類型 

2)列式存儲的優點

  1. 可以跳過不符合條件的數據,只讀取需要的數據,降低IO數據量
  2. 壓縮編碼 可以降低磁盤存儲空間。由於同一列的數據類型是一樣的,可以使用更高效的壓縮編碼(例如Run Length Encoding和Delta Encoding)進一步節約存儲空間。
  3. 只讀取需要的列,支持向量運算,能夠獲取更好的掃描性能

3)parquet表的insert之前要設置 set hive.merge.mapfiles=false;
  如果它的輸入包含不止一個mapreduce,比如join/group by/distinct,要建一個RCF的中轉表,然后再select into

6. hive的三種常用存儲格式

Hive的三種文件格式:TEXTFILE、SEQUENCEFILE、RCFILE

  • TEXTFILE和SEQUENCEFILE的存儲格式都是基於行存儲的
  • RCFILE是基於行列混合的思想,先按行把數據划分成N個row group,在row group中對每個列分別進行存儲。
  • 詳細查看

 


免責聲明!

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



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