日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【pyhive】本地使用pyhive连接hive数据库踩的坑

發布時間:2023/12/31 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【pyhive】本地使用pyhive连接hive数据库踩的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?OK,本文來看看本地在PyCharm中使用pyhive連接hive數據庫時踩過的坑吧,先看看一眼小編的測試代碼~

? ? ? ?首先是封裝了一個連接hive獲取數據的類,因為是測試,所以寫的簡單了些,如下:

''' @File : sql.py @Author: xzw @Date : 2020/6/14 @Desc : 封裝類 '''from pyhive import hive import pandas as pdclass TestHive(object):'''連接Hive獲取數據'''def __init__(self, host, port, username, database):'''初始化方法:param host: 地址:param port: 端口號:param username: 用戶名:param database: 數據庫名稱'''self.conn = hive.Connection(host=host, port=port, username=username, database=database)def get_data(self, sql):'''獲取數據:param sql: SQL語句:return: 返回得到的數據'''data = pd.read_sql(sql, self.conn)return data

? ? ? ?然后是測試類:

''' @File : manager.py @Author: xzw @Date : 2020/6/14 @Desc : 訪問Hive獲取數據 '''from connect_hive.sql import TestHive from fastapi import FastAPI import uvicornapp = FastAPI()@app.get("/get_hive_data") def get_data():'''獲取hive中的數據:return:'''host, port, username, database = 'cdh-master', 10000, 'hive', 'test'instance = TestHive(host, port, username, database)result = instance.get_data("select * from xzw")return {"result": result}if __name__ == '__main__':uvicorn.run(app="manager:app", host="127.0.0.1", port=9999, reload=True, debug=True)

? ? ? ?上面就是整個過程的簡單代碼,想象著很快就能拿到hive中的數據了,然后……坑來了~

? ? ? ?第一個坑:

thrift.transport.TTransport.TTransportException: Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'

? ? ? ?解決辦法是在Connection中添加auth="NOSASL":

self.conn = hive.Connection(host=host, port=port, username=username, database=database, auth="NOSASL")

? ? ? ?第二個坑:

Connection Issue: thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

? ? ? ?解決辦法是在hive-site.xml中增加下面屬性:

<property><name>hive.server2.authentication</name><value>NOSASL</value> </property>

? ? ? ?當然,小編使用的是CDH搭建的集群,直接在監控界面配置即可,如下所示:

總結

以上是生活随笔為你收集整理的【pyhive】本地使用pyhive连接hive数据库踩的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。