【presto】使用python执行presto任务

前言

目前发现有两个驱动包,分别是:

  • pyhive : https://github.com/dropbox/PyHive
  • presto-python-client : https://github.com/prestodb/presto-python-client

这里项目使用的是presto-python-client,毕竟是官方的。而且我这里访问的Presto集群是需要用户名密码进行https认证。

环境准备

  • python2.7
  • presto-python-client

安装 pip install presto-python-client

config.properties

这里需要注意几个点:

  • 是http 还是https 认证: http-server.https.enabled
  • 认证端口: http-server.https.port

在这里插入图片描述

另外一个需要presto.pem文件。

到此:这里需要的环境已经准备好了!

具体代码

#!/usr/bin/python2.7
#-*- coding:utf8 -*-
import prestodb

def get_presto_data():
  try:
     # host是服务器ip,port是端口,hive指的是Presto的catalog。
     conn=prestodb.dbapi.connect(
             host='presto.test.com', # host位置
             port=8443, # 端口位置
             user='risk', # 用户名
             catalog='hive', # 使用的hive
             schema='default', # 使用的schema,默认是default,可以不改
             http_scheme='https', #http的schema,
             auth=prestodb.auth.BasicAuthentication("username", "password") # 这里填用户名密码
     )
     conn._http_session.verify = './presto.pem' #校验文件存储位置,这个应该是默认位置
     
     sql = '''SELECT "trisk.t70"."real_app_name" AS "real_app_name"
     FROM trisk.t70'''

     cur = conn.cursor()
     cur.execute(sql) # sql语句
     rows = cur.fetchall()
     print(rows)
  except:
     print("presto server error")


if __name__ == '__main__':
  startTime = int(time.time())
  get_presto_data()
  endTime = int(time.time())
  execTime = endTime - startTime
  print(execTime)

蝉噪林逾静,鸟鸣山更幽。——王籍《入若耶溪》

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值