一、Python連接Hive集群
連接Hive集群需要用到thrift庫,具體步驟如下:
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
from thrift.hive import ThriftHive
# 連接hive服務
transport = TSocket.TSocket('host', port)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
其中host為Hive的伺服器地址,port為服務埠號。
二、Python連接Hive資料庫
連接Hive資料庫使用PyHive庫,需要先安裝該庫:
pip install pyhive
連接Hive資料庫的代碼如下:
from pyhive import hive
# 連接hive數據
conn = hive.Connection(host='host', port=port, username='user')
cursor = conn.cursor()
cursor.execute('use database')
其中host為Hive的伺服器地址,port為服務埠號,user為用戶名,database為連接的資料庫名稱。
三、Python連接Hive的configuration
在連接Hive時,可以使用configuration配置參數,例如:
from pyhive import hive
config = {'host': 'host', 'port': port, 'username': 'user',
'database': 'database', 'auth': 'NOSASL'}
conn = hive.Connection(**config)
cursor = conn.cursor()
cursor.execute('use database')
其中auth為Hive的認證方式,這裡使用的是NOSASL方式。
四、Python連接Hive的庫
Hive支持不同的存儲格式,例如Avro、Parquet等,如果需要連接不同格式的庫,需要指定相應的存儲插件。以連接Avro為例:
from pyhive import hive
config = {'host': 'host', 'port': port, 'username': 'user',
'database': 'database', 'auth': 'NOSASL', 'configuration': {'mapred.job.tracker': 'local',
'hive.metastore.uris': 'thrift://host:port'}}
conn = hive.Connection(**config)
cursor = conn.cursor()
cursor.execute("CREATE TABLE table_name ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' TBLPROPERTIES ('avro.schema.literal'='avro_schema_string')")
其中mapred.job.tracker指定的是Hadoop的job tracker,hive.metastore.uris指定的是Hive的元數據伺服器地址。
五、Python連接Hive資料庫的Thrift
除了使用PyHive庫連接Hive外,還可以使用Hive的Thrift介面連接。示例如下:
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.hive import ThriftHive
# 連接hive Thrift服務
transport = TSocket.TSocket('host', port)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute('use database')
其中host為Hive的伺服器地址,port為服務埠號。
六、Python連接Hive資料庫Impala
除了連接Hive,還可以連接Impala資料庫。示例如下:
from impala.dbapi import connect
# 連接impala資料庫
conn = connect(host='host', port=port, user='user', database='database')
cursor = conn.cursor()
cursor.execute('SELECT * FROM table_name LIMIT 10')
其中host為Impala的伺服器地址,port為服務埠號,user為用戶名,database為連接的資料庫名稱。
七、Python連接Hive的URL如何使用
連接Hive可以使用URL方式連接,連接字元串如下:
hive://[user]:[password]@host:port/database
示例代碼如下:
from pyhive import hive
# 連接hive數據
conn = hive.Connection(url='hive://user:password@host:port/database')
cursor = conn.cursor()
cursor.execute('use database')
八、Python連接Hive的模式參數
連接Hive時可以指定schema,示例代碼如下:
from pyhive import hive
config = {'host': 'host', 'port': port, 'username': 'user', 'database': 'database', 'schema': 'schema', 'auth': 'NOSASL'}
conn = hive.Connection(**config)
cursor = conn.cursor()
cursor.execute('use database')
其中schema為連接的模式參數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279720.html