python程序訪問hive倉庫,並將讀取的數據寫入文本

實驗環境

centos 7; pyspark 2.4.3;

在訪問Hive數據倉庫之前,需要我們配置hadoop中一些組件,使得我們可以順利 訪問hdfs,hive(可以通過hadoop -h , hive進行測試是否配置成功)。其實hive只是用作數據查詢,類似於sql語句,利用hive查詢數據時需要藉助hadoop中的核心組件MapReduce和Hdfs,它使用MapReduce中的map和reduce方法進行數據處理,而查詢的數據來自於hdfs。

hadoop 中涉及到許多組件,東西蠻多的,我最近也在學習這一塊。本來是想邊學邊整理寫個系統性博客教程,後來發現已經有了一個比較完善的學習教程了。這裏推薦給學習大數據的同學,廈門大學數據庫實驗室。在慕課網課網易課堂有相關視頻,而且還是免費的,老師講的都是一些基礎性東西,很容易懂。

相關代碼及解釋

爲了便於理解,先截張圖看下集羣上數據的存儲格式:
在這裏插入圖片描述

下面的程序如上圖所示,設定起始時間,終止時間,利用時間戳來篩選數據。

from pyspark.sql import HiveContext
from pyspark import SparkContext
sc = SparkContext(appName='readHiveDns')
hive_context = HiveContext(sc)
# return start_time and end_time from front
start_time = 1560676040
end_time = 1560676049
hive_context.sql('use xidian')
sql_hive = " SELECT dns_qry_name as dns FROM dns " \
             "WHERE {0} <= unix_tstamp and unix_tstamp <= {1} " \
             "LIMIT 100".format(start_time, end_time)
readDns = hive_context.sql(sql_hive)
# 將篩選的數據轉換爲list格式,下面這一步將會從hdfs中拿去數據進行轉換
rows = readDns.collect()
saveFilePath = '/usr/readHive1.txt'
f = open(saveFilePath, 'w')
for row in rows:
    f.write(row[0] + '\n')
f.close()

通過上面的程序,便可以將從hive裏讀取的數據存儲在本地的文本中。打開終端,輸入下面命令查看:

[root@web ~]# cat /usr/readHive1.txt
cn.unionpay.com.wscdns.com
tools.3g.qq.com
is1-ssl.mzstatic.com
sc.xidian.edu.cn
zhizi.qq.com

data.bilibili.com
WWW.JD.COM
www.jd.com
login.live.com
www.sina.com.cn
thepiratebay.org
www.taobao.com
p.qlogo.cn
cpro.baidustatic.com
annalect.com.cn

歡迎關注我的微信公衆號,談風月之餘談技術
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章