presto使用初探

2021-10-19 18:32:06 字數 1142 閱讀 1965

前言 presto使用第一感覺: 真是快啊,百萬資料秒級出結果

presto 文件:

參考文章

1 presto是什麼:

是facebook的開源的,完全基於記憶體的並⾏計算,分布式sql互動式查詢引擎

是一種大規模並行處理(mpp)架構,多節點管道式執行

⽀持任意資料來源(通過擴充套件式聯結器元件),資料規模gb〜pb級

使用的技術,如向量計算,動態編譯執行計畫,優化的orc和parquet reader等

presto不太支援儲存過程,支援部分標準sql

presto的查詢速度比hive快5-10倍

適合:pb級海量資料複雜分析,互動式sql查詢,⽀持跨資料來源查詢

不適合:多個大表的連線操作,因為急是基於記憶體的,多張大表在記憶體裡可能放不下

2 presto和hive的對比

參考文章

hive是乙個資料倉儲,是乙個互動式比較弱一點的查詢引擎,互動式沒有似的那麼強,而且只能訪問hdfs的資料

presto是乙個互動式查詢引擎,可以在很短的時間內返回查詢結果,秒級,分鐘級,能訪問很多資料來源

presto是乙個分布式sql查詢引擎,它被設計為用來專門進行高速,實時的資料分析。

hive在查詢的100gb的級別的資料時,消耗時間已經是分鐘級了

但是presto是取代不了hive的,因為p全部的資料都是在記憶體中,限制了在記憶體中的資料集大小,比如多個大表的連線,這些大表是不能完全放進記憶體的,實際應用中,對於在presto的查詢是有一定規定條件的,比比如說乙個查詢在急查詢超過30分鐘,那就殺掉吧,說明不適合在presto上使用,主要原因是,查詢過大的話,會占用整個集群的資源,這會導致你後續的查詢是沒有資源進行查詢的,這跟presto的設計理念是衝突的,就像是你進行乙個查詢,但是要等個5分鐘才有資源繼續查詢,這是很不合理的,互動式就變得弱了很多

presto的實現和hive有著本質的不同:

hive是把乙個查詢轉化成多個stage的mapreduce的任務,然後乙個接乙個執行。執行的中間結果通過對磁碟的讀寫來同步。然而,presto沒有使用mapreduce,它是通過乙個定製的查詢和執行引擎來完成的。它的所有的查詢處理是在記憶體中,這也是它的效能很高的乙個主要原因。所以在日常使用中,如果有大量的連線偶爾會發生記憶體不足的報錯,乙個常見的解決方法是生成中間表的方式來減少加入的次數。

使用presto呼叫hive

hive service hivestore 關於最後的乙個 告訴小白一下是後台執行的意思 presto所在的檔案中etc 自建 的catalog 自建 中hive.properties 自建檔案 中配置 connector.name hive hadoop2 這個聯結器的選擇要根據自身集群情況結合...

centos7安裝使用presto

客戶端查詢比較一下效率 測試資料量 100w條 執行sql select count 1 from fake db.fake table 執行sql select count distinct company from fake db.fake table where cardno like 199...

Presto初步認識

presto是乙個分布式sql查詢引擎,它被設計為用來專門進行高速 實時的資料分析。presto 的實現和 hive 有著本質的不同 hive 是把乙個 query 轉化成多個 stage 的 mapreduce 的任務,然後乙個接乙個執行。執行的中間結果通過對磁碟的讀寫來同步。然而,presto ...