イクジニアブログ

育児 + エンジニア = イクジニア

Presto 複数データソースへの接続方法

awk好きのにいやんです。こんばんわ。

 

awk使えば大抵の処理はいけますからね!簡単な処理はcutで。

 

前回ではPrestoのインストール方法を書きましたが、今回は複数のデータソースにつなぐ方法を紹介したいと思います。

 

PrestoではCatalogという単位でデータソースを追加出来ます。

 

追加出来るデータソースは

MySQL

PostgreSQL

・Hive

・Cassandra

などがあります。

 

Catalogを追加するには、etc/catalog下に

{カタログ名}.propertiesファイルを追加するだけでOK

 

例えばMySQLだったら

 

mysql.propertiesファイルを以下のように作成

vi etc/catalog/mysql.properties
# connector.name=mysql
# connection-url=jdbc:mysql://example.net:3306
# connection-user=root
# connection-password=secret

 

複数のmyqlに繋ぎたい際は

mysql1.properties,mysql2.propertiesの用にCatalog名を任意の名前に変えればOKです

 

PostgreSQLのCatalogファイルは以下のように

vi etc/catalog/postgresql.properties
# connector.name=postgresql
# connection-url=jdbc:postgresql://example.net:5432/database
# connection-user=root
# connection-password=secret

 

 

複数のCatalogが作成出来たらcliツールから

{Catalog名}.{DB名}.{テーブル名}でアクセス出来ます。

 

select * from mysql1.hogedb.moge;

 

 

MySQLPostgreSQLのjoinも出来ちゃいます

select * 
from
mysql1.hogedb.moge m
join
postgresql.pdb.moge p
on
(m.id = p.id);

 

 MySQLPostgreSQLだけでなく、Hiveや別のMySQLともjoin出来るので、ログデータとサマリーデータを分けて保管してる場合などの検索にとても便利かと。

 

また、create table文を使うとHiveに入ってるデータをMySQLに入れる事なんかも出来ますよ。

CREATE TABLE mysql1.hogedb.orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM hive.hdb.orders
GROUP BY orderdate

 

え?何故create table文を使うのかって?insert into 使えばいいじゃないかって?

残念ながらhiveのデータをmysqlに入れる際にinsert into文は今はまだサポートされていないっぽいです・・・

 

ここら辺は今後に期待ですね!