Presto 複数データソースへの接続方法
awk好きのにいやんです。こんばんわ。
awk使えば大抵の処理はいけますからね!簡単な処理はcutで。
前回ではPrestoのインストール方法を書きましたが、今回は複数のデータソースにつなぐ方法を紹介したいと思います。
PrestoではCatalogという単位でデータソースを追加出来ます。
追加出来るデータソースは
・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名}.{DB名}.{テーブル名}でアクセス出来ます。
select * from mysql1.hogedb.moge;
MySQLとPostgreSQLのjoinも出来ちゃいます
select *
from
mysql1.hogedb.moge m
join
postgresql.pdb.moge p
on
(m.id = p.id);
MySQLとPostgreSQLだけでなく、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文は今はまだサポートされていないっぽいです・・・
ここら辺は今後に期待ですね!