1:Data Sources
Data Sources包含四個(gè)核心概念,首先是Connector,它表示presto連接的數據源,可能是Hive、MySQL、kudu等等,可以將它理解為數據庫的驅動(dòng),通過(guò)presto的SPI抽象,各種數據可以成為presto的數據源。
第二個(gè)概念是Catalog,每個(gè)catalog和connector一一對應,從配置文件的角度看,presto安裝子目錄catlog包含了所有的catalog,那它到底代表什么?
一個(gè)catalog包含schemas,并且通過(guò)connector引用數據源,簡(jiǎn)單的來(lái)說(shuō),配置一個(gè)hive catalog就相當于引用hive connector,一個(gè)完全限定符表名hive.test_data.test表示在hive catalog中引用了test_data schema中的test表。
第三個(gè)概念是Schema,它用于組織表,相當于數據庫(此時(shí)理解catalog就明白了),通過(guò)catalog和schem定義了一組能查詢(xún)的表。
最后一個(gè)概念Table理解起來(lái)就非常簡(jiǎn)單了,表通過(guò)各種類(lèi)型的列組織成很多無(wú)序的行,和關(guān)系型數據庫中的表非常類(lèi)似,那如果是一個(gè)kafka connector呢?不同的connector從源數據中map出表結構。
2:如何配置Data Sources
我使用比較多的數據源就是MySQL、Hive、Kudu,簡(jiǎn)單說(shuō)明下。
如果是MySQL,創(chuàng )建mysql.properties文件:
connector.name=mysql
connection-url=jdbc:mysql://test:3306
connection-user=test
connection-password=test
connector.name表示了數據源類(lèi)型,其他參數很好理解。
如果是Hive,則配置hive.properties文件:
connector.name=hive-hadoop2
hive.metastore.uri=thrift://test:9083
hive.config.resources=/opt/hadoop/etc/hadoop/core-site.xml,/opt/hadoop/etc/hadoop/hdfs-site.xml
hive.config.resources也可以不配置,如果想使用操作hadoop,則可以引用hadoop集群的配置文件。
最后一個(gè)配置是kudu,kudu.properties文件:
connector.name=kudu
kudu.client.master-addresses=127.0.0.1
配置kudu的master監聽(tīng)地址即可。
各種數據源的配置是不是非常簡(jiǎn)單?如果想配置高階功能,可在官方文檔中查看。
3:如何鏈接數據源
配置好數據源后,如何鏈接,如何將數據源的四大核心概念串起來(lái)呢?
可以安裝一個(gè)presto命令行包:
$ wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.283/presto-cli-0.283-executable.jar
$ mv presto-cli-0.283-executable.jar /usr/local/bin/prosto
$ chmod +x /usr/local/bin/prosto
如果想鏈接MySQL:
$ presto --server 127.0.0.1:8850
--catalog mysql
--schema test;
明白catalog、schema、table的概念了吧?catalog相當于鏈接mysql數據源(mysql.properties),schema相當于MySQL中的test數據庫。
如何鏈接Hive:
$ presto --server 127.0.0.1:8850
--catalog hive
--schema default;
不用多解釋了吧,理解下四大核心概念。
如何鏈接kudu,其實(shí)kudu是沒(méi)有數據庫概念的,不過(guò)impala一般會(huì )幫kudu組織數據庫:
$ presto --server 127.0.0.1:8850
--catalog kudu
--schema default;
kudu的輸出很奇怪,這個(gè)暫且不表,后續給大家介紹下,通過(guò)這篇文章,可以大概理解prosto數據源的概念了。
聯(lián)系客服