日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Presto入门介绍

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Presto入门介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在調研presto查詢引擎的模塊,先了解了下大體的框架和基本知識。這篇文章適合入門的童鞋看,因此轉載了,用于以后查詢使用。

?

1,?Presto基本認識?

1.1 定義?
Presto是一個分布式的查詢引擎,本身并不存儲數據,但是可以接入多種數據源,并且支持跨數據源的級聯查詢。Presto是一個OLAP的工具,擅長對海量數據進行復雜的分析;但是對于OLTP場景,并不是Presto所擅長,所以不要把Presto當做數據庫來使用。?

和大家熟悉的Mysql相比:首先Mysql是一個數據庫,具有存儲和計算分析能力,而Presto只有計算分析能力;其次數據量方面,Mysql作為傳統單點關系型數據庫不能滿足當前大數據量的需求,于是有各種大數據的存儲和分析工具產生,Presto就是這樣一個可以滿足大數據量分析計算需求的一個工具。?

1.2?數據源?
Presto需要從其他數據源獲取數據來進行運算分析,它可以連接多種數據源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等?

一條Presto查詢可以將多個數據源的數據進行合并分析。?
比如:select * from a join b where a.id=b.id;,其中表a可以來自Hive,表b可以來自Mysql。?

1.3?優勢?
Presto是一個低延遲高并發的內存計算引擎,相比Hive,執行效率要高很多。?

舉例:?
SELECT id,?
? ?name,?
? ? ? ?source_type,?
? ? ? ?created_at?
FROM dw_dwb.dwb_user_day?
WHERE dt='2018-06-03'?
? AND created_at>’2018-05-20’;?

上述SQL在Presto運行時間不到1秒鐘,在Hive里要幾十秒鐘。?

1.4?數據模型?
Presto使用Catalog、Schema和Table這3層結構來管理數據。?

---- Catalog:就是數據源。Hive是數據源,Mysql也是數據源,Hive 和Mysql都是數據源類型,可以連接多個Hive和多個Mysql,每個連接都有一個名字。一個Catalog可以包含多個Schema,大家可以通過show catalogs 命令看到Presto連接的所有數據源。?
---- Schema:相當于一個數據庫實例,一個Schema包含多張數據表。show schemas from 'catalog_name'可列出catalog_name下的所有schema。?
---- Table:數據表,與一般意義上的數據庫表相同。show tables from 'catalog_name.schema_name'可查看'catalog_name.schema_name'下的所有表。?

在Presto中定位一張表,一般是catalog為根,例如:一張表的全稱為 hive.test_data.test,標識 hive(catalog)下的 test_data(schema)中test表。?
可以簡理解為:數據源的大類.數據庫.數據表。?

2,?Presto與Hive?
Hive是一個基于HDFS(分布式文件系統)的一個數據庫,具有存儲和分析計算能力, 支持大數據量的存儲和查詢。Hive 作為數據源,結合Presto分布式查詢引擎,這樣大數據量的查詢計算速度就會快很多。?

Presto支持標準SQL,這里需要提醒大家的是,在使用Hive數據源的時候,如果表是分區表,一定要添加分區過濾,不加分區掃描全表是一個很暴力的操作,執行效率低下并且占用大量集群資源,大家盡量避免這種寫法。?

這里提到Hive分區,我簡單介紹一下概念。Hive分區就是分目錄,把一個大的數據集根據業務需要分割成更細的數據集。?

舉例:假如一個表的數據都放在/user/xiaoming/table/目錄下,如果想把數據按照每天的數據細分,則就變成/user/xiaoming/table/2018-06-01/,/user/xiaoming/table/2018-06-02/,……如果查詢某一天的數據,就可以直接取某一天目錄下的數據,不需要掃描其他天的數據,節省了時間和資源。?

使用Presto:?
3,?Presto接入方式?
Presto的接入方式有多種:presto-cli,pyhive,jdbc,http,golang,SQLAlchemy,PHP等,其中presto-cli是Presto官方提供的,下面以presto-cli為例展開說明(自行下載)。?

以連接hive數據源為例,在電腦終端輸入:./presto-cli.jar --server presto.xxx-apps.com:9200 --catalog hive --user xxxx --source 'pf=adhoc;client=cli'就可以進入presto終端界面。?

先解釋下各參數的含義:?

--server 是presto服務地址;?
--catalog 是默認使用哪個數據源,后面也可以切換,如果想連接mysql數據源,使用mysql數據源名稱即可;?
--user 是用戶名;?
--source 是代表查詢來源,source設置格式為key=value形式(英文分號分割); 例如個人從command line查詢應設置為pf=adhoc;client=cli。?

進入終端后:?
查看數據源: show catalogs;?
查看數據庫實例:show schemas;?

Presto使用手冊:https://prestodb.io/docs/current/?

問答:?
1.使用場景??
? ? -mysql跨數據庫查詢;-數倉的表數據查詢(數據分析) ...?

2.為什么presto查詢速度比Hive快??
? ? presto是常駐任務,接受請求立即執行,全內存并行計算;hive需要用yarn做資源調度,接受查詢需要先申請資源,啟動進程,并且中間結果會經過磁盤。

總結

以上是生活随笔為你收集整理的Presto入门介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。