成人午夜一区二区_操碰在线视频_国产精品麻豆一区二区三区_中文黄色一级片_欧美日本中文字幕_高清视频91

當(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,就需要安裝好對(duì)應(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的連接對(duì)象

  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)對(duì)象

  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的連接對(duì)象

  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)對(duì)象,同時(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的交互操作。我們?cè)谑褂玫臅r(shí)候,只需要將需要執(zhí)行的HQL語句告訴這個(gè)類的對(duì)象即可。

  # @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ù),用于釋放連接對(duì)象

  :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的對(duì)象

  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ā)展趨勢(shì)
  • · 匯聚企業(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一区二区在线观看 | 国产精品xxx在线观看www | 亚洲视频高清 | 久久久久久久久网站 | 国产精品久久久久久久av大片 | 韩国三级av | 狠狠热综合网 | 717影视三级理论电影在线播放 | 在线v| 亚洲欧美日韩在线不卡 | 久久精品国产亚洲 | 久久久久久久国产 | 综合久久久久综合 | 国产精品视频1区2区3区 | 免费日韩一区二区 | 午夜精品福利一区二区三区蜜桃 | 国产伦精品一区二区三区 | 美女视频久久 | 美女黄网 | 天堂av电影 | 精品一区久久 | 日本中文字幕在线播放 | 国产这里只有精品 | 亚洲a人| 免费观看黄色网 | 日本一区二区三区四区视频 | 中文字幕免费在线 | 亚洲一区二区三区在线视频 | 欧美午夜在线视频 | 波多野结衣电影久久 | 日韩av在线免费播放 | 国产精品999999| 色欧美综合 | 久久一精品 |