Python样例代码
功能简介
通过连接zookeeper上的对应znode获取到当前主JDBCServer的IP和PORT,然后使用pyhive连接到这个JDBCServer,从而实现在JDBCServer-ha模式下,出现主备倒换后不需要修改代码依旧就能直接访问新的主JDBCServer服务。
该功能仅支持普通集群(未开启Kerberos认证的集群)使用。
环境准备
- 安装支持环境。(开发环境请参考Spark应用开发环境简介准备)
执行以下命令安装编译工具:
yum install cyrus-sasl-devel -y
yum install gcc-c++ -y
- 安装相应的python模块。
需要安装sasl,thrift,thrift-sasl,PyHive。
pip install sasl
pip install thrift
pip install thrift-sasl
pip install PyHive
- 安装python连接zookeeper工具。
- 从MRS集群上获取相应参数。
样例代码
from kazoo.client import KazooClient zk = KazooClient(hosts='ZookeeperHost') zk.start() result=zk.get("/thriftserver/active_thriftserver") result=result[0].decode('utf-8') JDBCServerHost=result[0].split(":")[0] JDBCServerPort=result[0].split(":")[1] from pyhive import hive conn = hive.Connection(host=JDBCServerHost, port=JDBCServerPort,database='default') cursor=conn.cursor() cursor.execute("select * from test") for result in cursor.fetchall(): print result
其中,ZookeeperHost使用4获取到的zookeeper IP和PORT替换。