apache druid 和 presto 用于大数据处理, 都借助内存处理大数据的聚合统计, 支持 python
1.druid 读取数据的 python 代码: 使用 pydruid
- from pydruid.client import *
- from pydruid.utils import aggregators
- query = PyDruid("http://ip: 端口 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
来源: http://www.bubuko.com/infodetail-3474913.html