中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

當(dāng)前位置: 首頁 / 技術(shù)干貨 / 正文
Python如何操作Hive?

2023-02-23

   需要 self

Python如何操作Hive

  Python是一個(gè)非常優(yōu)秀的編程語言,使用的群體非常的多,第三方的庫也非常的多。其中有一個(gè)庫叫做:PyHive,作用就是:連接到Hive,使用Python語言來操作Hive的數(shù)據(jù)!

  PyHive是通過HiveServer2服務(wù)連接到原數(shù)據(jù)庫的,因此需要啟動(dòng)HiveServer2服務(wù)!

  啟動(dòng)HiveServer2服務(wù)

  # 直接開啟HiveServer2的服務(wù),但是需要注意這個(gè)進(jìn)程是一個(gè)前臺(tái)進(jìn)程

  hive --service hiveserver2

  # 啟動(dòng)HiveServer2的服務(wù),并將其設(shè)為后臺(tái)進(jìn)程,但是依然會(huì)在控制臺(tái)輸出一些日志信息

  hive --service hiveserver2 &

  # 啟動(dòng)HiveServer2的服務(wù),并將其設(shè)為后臺(tái)進(jìn)程,將日志輸出在指定的文件中

  hive --service hiveserver2 > /tmp/my_hive_logs/hiveserver2.log 2>&1 &

  需要注意:

  HiveServer2服務(wù)的完全啟動(dòng)需要一定的時(shí)間,追蹤日志文件會(huì)發(fā)現(xiàn)最后在啟動(dòng)SESSION_ID,當(dāng)啟動(dòng)到4個(gè)SESSION_ID的時(shí)候,服務(wù)才算完全啟動(dòng),此時(shí)才可以使用beeline或者PyHive連接到Hive的元數(shù)據(jù)。這個(gè)過程需要1分鐘左右。

  安裝依賴

  我們需要使用Python代碼來操作Hive,就需要安裝好對應(yīng)的庫文件。直接使用pip命令來安裝即可。那么安裝在什么位置呢?主機(jī)還是虛擬機(jī)呢?

  在哪里執(zhí)行代碼,就在哪里安裝!

  ●你的Python代碼需要在windows本地運(yùn)行,那就需要在windows上安裝;

  ●你的Python代碼需要在macOS本地運(yùn)行,那就需要在macOS上安裝;

  ●你的Python代碼需要在CentOS虛擬機(jī)中運(yùn)行,那就需要在CentOS虛擬機(jī)上安裝

  # 使用pip3安裝第三方庫文件

  pip3 install pyhive sasl thrift thrift-sasl

  注意事項(xiàng):

  在CentOS中,安裝sasl的時(shí)候可能會(huì)失敗,是因?yàn)槿鄙僖蕾囄募苯邮褂脃um安裝即可。

  yum install gcc gcc-c++ cyrus-sasl-devel

  基本的訪問代碼

  # @Author : 大數(shù)據(jù)章魚哥

  # @Company : 北京千鋒互聯(lián)科技有限公司

  # 導(dǎo)入第三方模塊

  from pyhive import hive

  # 創(chuàng)建程序與Hive的連接對象

  hive_connection = hive.Connection(

  host="192.168.10.101", # 開啟了HiveServer2服務(wù)的節(jié)點(diǎn)IP地址或者主機(jī)名

  port=10000, # 連接到HiveServer2服務(wù)的端口,默認(rèn)是10000端口

  username="root", # 連接到HiveServer2服務(wù)的用戶名

  database="mydb" # 連接到Hive的數(shù)據(jù)庫名字

  )

  # 創(chuàng)建游標(biāo)對象

  hive_cursor = hive_connection.cursor()

  # 執(zhí)行HQL語句

  hive_cursor.execute("select * from emp")

  # 獲取所有的執(zhí)行結(jié)果

  result = hive_cursor.fetchall()

  for row in result:

  print(row)

  # 釋放資源

  hive_cursor.close()

  hive_connection.close()

  使用PyHive操作Hive的過程,其實(shí)與Python操作MySQL數(shù)據(jù)庫非常的類似!

  當(dāng)然,在上述的代碼執(zhí)行過程中,有可能會(huì)因?yàn)橹虚g的代碼出現(xiàn)異常,導(dǎo)致最終的資源無法釋放的問題,因此我們可以這樣優(yōu)化代碼

  # @Author : 大數(shù)據(jù)章魚哥

  # @Company : 北京千鋒互聯(lián)科技有限公司

  # 導(dǎo)入第三方模塊

  from pyhive import hive

  # 創(chuàng)建程序與Hive的連接對象

  hive_connection = hive.Connection(

  host="192.168.10.101", # 開啟了HiveServer2服務(wù)的節(jié)點(diǎn)IP地址或者主機(jī)名(如果設(shè)置為主機(jī)名,需要保證已經(jīng)做好映射)

  port=10000, # 連接到HiveServer2服務(wù)的端口,默認(rèn)是10000端口

  username="root", # 連接到HiveServer2服務(wù)的用戶名

  database="mydb" # 連接到Hive的數(shù)據(jù)庫名字

  )

  # 創(chuàng)建游標(biāo)對象,同時(shí)使用with代碼段,完成資源的自動(dòng)釋放

  with hive_connection, hive_connection.cursor() as hive_cursor:

  # 執(zhí)行HQL語句

  hive_cursor.execute("select * from mydb")

  # 輸出查詢到的所有結(jié)果

  rows = hive_cursor.fetchall()

  for row in rows:

  print(row)

  功能封裝

  我們可以封裝一個(gè)類,專門用來做與Hive的交互操作。我們在使用的時(shí)候,只需要將需要執(zhí)行的HQL語句告訴這個(gè)類的對象即可。

  # @Author : 大數(shù)據(jù)章魚哥

  # @Company : 北京千鋒互聯(lián)科技有限公司

  from pyhive import hive

  class HiveClient:

  __slots__ = ('db', 'cur')

  def __init__(self, *, host='192.168.10.101', port=10000, username='root', database='mydb'):

  """

  構(gòu)造函數(shù),提供默認(rèn)的連接配置

  :param host: 連接到的服務(wù)器地址,默認(rèn) 192.168.10.101

  :param port: 連接到的服務(wù)器端口,默認(rèn) 10000

  :param username: 連接到的服務(wù)器用戶,默認(rèn) root

  :param database: 連接到的數(shù)據(jù)庫,默認(rèn) mydb

  """

  self.db = hive.Connection(host=host, port=port, username=username, database=database)

  self.cur = self.db.cursor()

  def __del__(self):

  """

  析構(gòu)函數(shù),用于釋放連接對象

  :return:

  """

  self.cur.close()

  self.db.close()

  def execute(self, sql, params=None):

  """

  執(zhí)行DDL、DML的操作

  :param sql: 需要執(zhí)行的SQL語句

  :param params: 執(zhí)行SQL語句時(shí)候的參數(shù)

  :return:

  """

  try:

  self.cur.execute(sql, params)

  self.db.commit()

  print("execute: ", sql, params)

  except Exception as e:

  print(e)

  self.db.rollback()

  def query_all(self, sql):

  """

  執(zhí)行指定的查詢語句,并返回所有的查詢結(jié)果

  :param sql: 需要執(zhí)行的查詢操作

  :return: 查詢到的所有結(jié)果

  """

  self.cur.execute(sql)

  return self.cur.fetchall()

  封裝完成之后,后面再使用到Python來操作Hive的時(shí)候?qū)?huì)非常的方便

  # 實(shí)例化連接到操作Hive的對象

  client = HiveClient()

  # 加載數(shù)據(jù),如果要使用local的路徑,需要注意的是這里指的是連接到的hiveserver2所在節(jié)點(diǎn)的文件系統(tǒng)

  # client.execute("load data local inpath '/root/example_01_data' into table example_01")

  # 克隆表

  # client.execute("create table example_01_copy as select * from example_01")

  # 刪除表

  # client.execute("drop table example_01_copy")

  # print(client.query_all("select * from example_01"))

好程序員公眾號(hào)

  • · 剖析行業(yè)發(fā)展趨勢
  • · 匯聚企業(yè)項(xiàng)目源碼

好程序員開班動(dòng)態(tài)

More+
  • HTML5大前端 <高端班>

    開班時(shí)間:2021-04-12(深圳)

    開班盛況

    開班時(shí)間:2021-05-17(北京)

    開班盛況
  • 大數(shù)據(jù)+人工智能 <高端班>

    開班時(shí)間:2021-03-22(杭州)

    開班盛況

    開班時(shí)間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發(fā) <高端班>

    開班時(shí)間:2021-05-10(北京)

    開班盛況

    開班時(shí)間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數(shù)據(jù)分析 <高端班>

    開班時(shí)間:2021-07-12(北京)

    預(yù)約報(bào)名

    開班時(shí)間:2020-09-21(上海)

    開班盛況
  • 云計(jì)算開發(fā) <高端班>

    開班時(shí)間:2021-07-12(北京)

    預(yù)約報(bào)名

    開班時(shí)間:2019-07-22(北京)

    開班盛況
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報(bào)名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)

中文在线免费看视频_国产成人精品亚洲日本在线观看_亚洲精品第一综合99久久_国产亚洲精品日韩综合网

            精品视频在线免费观看| 亚洲二区在线观看| 亚洲欧美日韩系列| 亚洲韩国一区二区三区| 毛片不卡一区二区| 国产成人午夜视频| 91国偷自产一区二区使用方法| 欧美视频在线播放| 精品国产成人在线影院 | 色偷偷久久人人79超碰人人澡 | 自拍偷自拍亚洲精品播放| 一二三区精品福利视频| 麻豆精品在线观看| 成人免费视频视频在线观看免费| 日本丰满少妇一区二区三区| 制服丝袜一区二区三区| 中文字幕 久热精品 视频在线 | 99精品国产热久久91蜜凸| 欧美日韩亚洲综合在线 | 国产91丝袜在线播放0| 91久久香蕉国产日韩欧美9色| 欧美人伦禁忌dvd放荡欲情| 久久精品水蜜桃av综合天堂| 一区二区三区四区亚洲| 激情综合色播激情啊| 91麻豆福利精品推荐| 日韩精品中文字幕一区| 亚洲欧美中日韩| 美国欧美日韩国产在线播放| 99国产精品一区| 日韩亚洲欧美在线| 亚洲欧美日韩系列| 国产福利91精品一区二区三区| 欧美伊人久久久久久久久影院| 久久伊人中文字幕| 亚洲18色成人| 成人爽a毛片一区二区免费| 8x8x8国产精品| 亚洲欧美激情小说另类| 国产在线精品不卡| 欧美精品丝袜久久久中文字幕| 久久先锋影音av鲁色资源| 午夜天堂影视香蕉久久| www.欧美精品一二区| 精品国产乱码久久久久久老虎| 一区二区免费在线| av一区二区三区四区| 久久亚洲精品小早川怜子| 午夜激情久久久| 91高清在线观看| 国产精品美女久久久久久2018| 久久成人免费电影| 在线播放日韩导航| 亚洲国产一区二区三区青草影视| www.亚洲免费av| 国产偷国产偷精品高清尤物| 久久精品国产久精国产| 91精品国产综合久久精品麻豆| 亚洲一区影音先锋| 91免费在线看| 亚洲桃色在线一区| 91亚洲男人天堂| 国产精品女主播av| 成人深夜在线观看| 国产精品情趣视频| 夫妻av一区二区| 国产欧美综合在线| 高清免费成人av| 欧美经典一区二区| 成人黄色综合网站| 国产精品国产三级国产三级人妇 | 久久精子c满五个校花| 精彩视频一区二区| 久久色视频免费观看| 国产自产视频一区二区三区| 欧美videos大乳护士334| 麻豆91在线播放免费| 日韩欧美色综合| 久久er精品视频| 久久综合中文字幕| 国产精品亚洲视频| 中文字幕乱码一区二区免费| 成人免费观看av| 亚洲婷婷在线视频| 色吊一区二区三区| 亚洲超碰97人人做人人爱| 欧美日韩精品一区二区天天拍小说 | 亚洲国产精品欧美一二99| 欧美在线小视频| 亚洲成a人v欧美综合天堂| 欧美日韩国产电影| 久久国产精品99久久久久久老狼 | 免费成人美女在线观看| 欧美不卡一区二区三区| 国产高清不卡一区二区| 国产精品久久久久9999吃药| 91热门视频在线观看| 亚洲国产cao| 日韩一区二区三区电影在线观看 | 久久久精品影视| 波多野结衣亚洲| 亚洲一区在线看| 日韩精品一区国产麻豆| 国产东北露脸精品视频| 亚洲免费毛片网站| 91精品福利在线一区二区三区 | 国产欧美精品一区二区三区四区 | 一区二区三区自拍| 欧美一级国产精品| 国产美女精品一区二区三区| 亚洲欧洲av一区二区三区久久| 欧美性色aⅴ视频一区日韩精品| 免费在线观看日韩欧美| 久久精品一区二区三区不卡牛牛| 91一区一区三区| 免费在线欧美视频| 国产精品久久久久精k8| 欧美人牲a欧美精品| 国产精品538一区二区在线| 一区二区三区自拍| 精品日韩一区二区三区| 91网页版在线| 久久国产精品72免费观看| 《视频一区视频二区| 欧美一区二区精品久久911| www.av精品| 另类小说一区二区三区| 亚洲免费观看高清完整版在线观看熊| 欧美日韩国产不卡| www.综合网.com| 久久99精品国产麻豆婷婷洗澡| 亚洲人成人一区二区在线观看 | 国产在线国偷精品产拍免费yy| 亚洲男人天堂av网| 久久综合精品国产一区二区三区| 欧美在线观看视频一区二区三区| 国产最新精品精品你懂的| 亚洲一区中文在线| 国产精品美日韩| 精品国产乱码久久久久久久久 | 午夜一区二区三区视频| 国产精品色婷婷久久58| 欧美成人综合网站| 欧美色涩在线第一页| 99视频一区二区| 国产精品一区二区在线播放| 日韩在线观看一区二区| 亚洲免费资源在线播放| 国产欧美一区二区三区鸳鸯浴| 337p亚洲精品色噜噜狠狠| 色婷婷国产精品久久包臀| 国产风韵犹存在线视精品| 麻豆国产精品官网| 亚洲成人动漫一区| 亚洲男帅同性gay1069| 欧美国产丝袜视频| 久久久亚洲午夜电影| 日韩视频免费观看高清在线视频| 色婷婷综合中文久久一本| 高清不卡在线观看| 国产精华液一区二区三区| 激情文学综合网| 久久精品久久久精品美女| 亚洲第一福利一区| 一区二区视频免费在线观看| 国产精品福利一区二区| 国产欧美日韩在线视频| 久久这里只有精品首页| 久久影院午夜论| 日韩美女一区二区三区四区| 欧美一区二区三区婷婷月色| 欧美日韩国产免费一区二区| 欧美亚日韩国产aⅴ精品中极品| 91亚洲男人天堂| 99精品视频一区二区三区| 99在线精品观看| 91视频在线看| 色综合视频在线观看| 色婷婷一区二区| 在线观看一区二区精品视频| 日本道在线观看一区二区| 欧美影片第一页| 欧美日韩中文另类| 欧美精品在线观看播放| 91精品婷婷国产综合久久竹菊| 欧美四级电影网| 欧美一区二区三区成人| 精品久久人人做人人爰| 久久人人超碰精品| 国产丝袜在线精品| 国产精品久99| 一个色综合av| 日韩精品欧美精品| 麻豆91在线播放免费| 国产精品一区二区果冻传媒| 国v精品久久久网| 一本久久综合亚洲鲁鲁五月天| 色女孩综合影院| 宅男噜噜噜66一区二区66| 日韩精品最新网址|