presto读取mysql数据

如果需要读取多数据源的数据的话,presto用起来就比较合适了。

安装

brew install presto

配置

配置文件目录:/usr/local/Cellar/presto/0.206/libexec/etc

  1. 修改config.properties里的端口号
  2. 在/etc下vim mysql.properties(连接mysql)

    connector.name=mysql
    connection-url=jdbc:mysql://example.net:3306
    connection-user=root
    connection-password=secret

    测试

    presto –server localhost:7077 –catalog mysql –schema park
    show tables;

启动

presto-server run  
 或者
 brew services start presto

读取mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
# !/usr/bin/env python
from sqlalchemy import *
from sqlalchemy.engine import create_engine
from sqlalchemy.schema import *
import pandas as pd
engine = create_engine('presto://localhost:7077/mysql')
def read_from_sql(sql):
df = pd.read_sql(sql, engine)
return df

问题点

在安装目录/usr/local/Cellar/presto/0.206下配置etc等配置文件,一直不生效

原因

1
2
3
ps -ef |grep presto
501 29796 1 0 5:06下午 ??
2:22.37 /usr/bin/java -cp /usr/local/Cellar/presto/0.206/libexec/lib/* -server -Xmx16G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -Dnode.environment=production -Dlog.levels-file=/usr/local/Cellar/presto/0.206/libexec/etc/log.properties -Dconfig=/usr/local/Cellar/presto/0.206/libexec/etc/config.properties -Dnode.data-dir=/usr/local/var/presto/data -Dnode.id=ffffffff-ffff-ffff-ffff-ffffffffffff com.facebook.presto.server.PrestoServer

可以看出,配置文件目录不正确

解决方案

修改正确目录下的配置文件