presto和druid获取数据

jaylong 2020-03-23

apache druid和presto用于大数据处理,都借助内存处理大数据的聚合统计,支持python
1.druid读取数据的python代码:使用pydruid
from pydruid.client import *
from pydruid.utils import aggregators

query = PyDruid("http://ip:端口", ‘druid/v2‘)
#可以有where条件过滤任务的状态或id
sql = "SELECT task_id,status,datasource,duration FROM sys.tasks"

curs = self.query.cursor()
curs.execute(str(sql))
#可循环curs获取结果
print(curs)

2.presto可以用pyhive或prestdb,测试是prestodb性能稳定,pyhive有秒级超时,包括使用了pyhive方式连接presto数据库的superset也存在耗时问题:
(1)连接mysql
在presto的etc/catalgo里创建属性文件,.properties后缀:
connector.name=mysql
connection-url=jdbc:mysql://ip:端口
connection-user=mysql 登录用户
connection-password=mysql密码

prestodb库代码:
import prestodb
conn=prestodb.dbapi.connect(
host=‘ip‘,
port=8080, #端口
user=‘mysql数据库连接用户名,在properties文件里有配置connection-user‘,
catalog=‘属性文件名,不带后缀‘,
schema=‘数据库名称‘,
)
cur = conn.cursor()

sql = "SELECT 字段名 FROM 数据表名 GROUP BY 字段名,字段名"
cur.execute(sql)
rows = cur.fetchall()
#打印结果
print(rows)

(2)连接mongodb:在mongodb里需要添加属性文件配置的用户名和密码,不必生效,数据库有记录就可以,获取数据代码同连接mysql
在presto的etc/catalgo里创建属性文件,.properties后缀:
connector.name=mongodb
mongodb.seeds=ip:端口
mongodb.schema-collection=自动创建字段信息的表名

mongodb.credentials=用户名:密码@用户所在的collection

相关推荐