大數(shù)據(jù)分析系列(一):使用R連接Hive

本文地址:http://www.reibang.com/p/651fb104088c,轉(zhuǎn)載請(qǐng)說(shuō)明出處。  
  從事大數(shù)據(jù)方面的工作已經(jīng)有一段時(shí)間了,對(duì)于Hadoop的各種組件也有了比較全面的了解走芋,有幸也用R做過(guò)一些數(shù)據(jù)分析的項(xiàng)目,免不了要將R和Hadoop進(jìn)行結(jié)合絮识。
  做過(guò)數(shù)據(jù)分析的人應(yīng)該對(duì)于R都比較熟悉绿聘,它的強(qiáng)項(xiàng)在于可以通過(guò)各種模型(拿來(lái)即用)對(duì)數(shù)據(jù)進(jìn)行加工嗽上、建模和分析次舌。但處理大數(shù)據(jù)不是它的強(qiáng)項(xiàng)。對(duì)于大規(guī)模數(shù)據(jù)的處理兽愤,Hadoop可以算是最佳的工具彼念。Hadoop生態(tài)圈提供了豐富的組件可以處理數(shù)據(jù)。比如

  • HDFS提供分布式存儲(chǔ)

  • Hive提供類(lèi)似SQL的接口對(duì)數(shù)據(jù)進(jìn)行處理

  • Spark可以提供全內(nèi)存的數(shù)據(jù)處理

等等浅萧。但Hadoop在數(shù)據(jù)分析和挖掘領(lǐng)域提供的組件還比較弱逐沙,雖然Spark提供了MLLIB組件提供算法支持,但仍然比較有限洼畅,且更不說(shuō)R強(qiáng)大的圖形繪制功能吩案。有時(shí)候我們需要擁有大數(shù)據(jù)的處理能力,同時(shí)又想使用R語(yǔ)言靈活而強(qiáng)大的數(shù)據(jù)分析和展示能力帝簇,那么自然就會(huì)想將兩者結(jié)合起來(lái)徘郭。R和Hadoop的結(jié)合一般有如下幾種方式(可能不全_):

  • R直接讀取HDFS的數(shù)據(jù)

  • R連接Hive使用Hadoop的數(shù)據(jù)

  • R通過(guò)SparkR使用Spark來(lái)處理Hadoop的數(shù)據(jù)

本文主要介紹R連接Hive組件靠益,通過(guò)SQL語(yǔ)句獲取Hadoop上的數(shù)據(jù)。關(guān)于Hive的基礎(chǔ)知識(shí)和使用方法這里不做過(guò)多介紹残揉。

R連接Hive是通過(guò)JDBC接口來(lái)進(jìn)行操作胧后。Hive組件通過(guò)一個(gè)名為HiServer2的服務(wù)來(lái)提供JDBC接口。假設(shè)啟動(dòng)HiServer2的機(jī)器的IP地址為192.168.1.101抱环,端口號(hào)為10000(默認(rèn)端口)壳快,那么在192.168.1.101上運(yùn)行beeline工具可以測(cè)試JDBC服務(wù)是否正常。beeline是Hive組件提供的一個(gè)sql客戶端镇草,可以通過(guò)JDBC接口連接到Hive服務(wù)眶痰。用beeline測(cè)試的結(jié)果如下:

    $beeline -u jdbc:hive2://192.168.1.101:10000 -n mr
    

mr為hive的用戶名。如果連接成功表示Hive的JDBC服務(wù)運(yùn)行正常梯啤,這是我們使用R連接Hive的前提條件凛驮。

以上步驟完成以后,我們就可以開(kāi)始使用R語(yǔ)言來(lái)訪問(wèn)Hive了条辟。這里推薦使用RStudio工具來(lái)進(jìn)行開(kāi)發(fā)黔夭。下圖是實(shí)際所用的R的版本。

R語(yǔ)言的版本

R語(yǔ)言訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)需要下載如下包:

  • rJava:R調(diào)用Java的類(lèi)所需要的包

  • DBI:R訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)的接口

  • RJDBC:RJDBC訪問(wèn)數(shù)據(jù)庫(kù)的包

以上包可以通過(guò)執(zhí)行如下腳本安裝:

  install.package("rJava")
  install.package("DBI")
  install.package("RJDBC")
  library('rJava')
  library('DBI')
  library('RJDBC')

下載所需要的R包以后羽嫡,還需要將集群中Hive JDBC的驅(qū)動(dòng)包拷貝出來(lái)放在R程序所在的本地本姥。具體步驟為:

  • 在hive的安裝目錄lib下面一般有一個(gè)jdbc-standalone的jar,類(lèi)似如下名字:
    hive-jdbc-1.2.1000.2.4.2.0-258-standalone.jar
  • 在hadoop的安裝目錄lib下有一個(gè)hadoop-common的jar杭棵,類(lèi)似如下名字:
    hadoop-common-2.7.1.2.4.2.0-258.jar

以上jar包的名字根據(jù)Hadoop的版本不同而不同婚惫,將以上兩個(gè)jar包拷貝到R所在的系統(tǒng)目錄下,假設(shè)目錄為D:\RHive魂爪,在R中可以通過(guò)setwd函數(shù)將工作目錄切換到j(luò)ar包所在的目錄:

  setwd("D:\\RHive")

然后執(zhí)行如下R腳本完成到Hive的連接:

drv <- JDBC(“org.apache.hive.jdbc.HiveDriver”, “hive-jdbc-1.2.1000.2.4.2.0-258-standalone.jar;hadoop-common-2.7.1.2.4.2.0-258.jar”)  //加載驅(qū)動(dòng)
conn <- dbConnect(drv, “jdbc:hive2://192.168.56.102:10000”, “mr”, “”)   //建連接
dt = dbGetQuery(conn,“select * from student limit 10”)   //測(cè)試連接

上述腳本中conn為JDBC連接先舷,dbGetQuery可以執(zhí)行Hive查詢,返回的結(jié)果在R中即為dataframe的數(shù)據(jù)結(jié)構(gòu)滓侍。后續(xù)就可以使用R中的各種函數(shù)或者模型來(lái)對(duì)Hive中的數(shù)據(jù)進(jìn)行處理了蒋川。更方便的是可以使用ggplot工具直接圖形展示Hive中的數(shù)據(jù),方便的對(duì)數(shù)據(jù)進(jìn)行探索撩笆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捺球,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子夕冲,更是在濱河造成了極大的恐慌氮兵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歹鱼,死亡現(xiàn)場(chǎng)離奇詭異泣栈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)南片,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)篙悯,“玉大人,你說(shuō)我怎么就攤上這事铃绒「胝眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵颠悬,是天一觀的道長(zhǎng)矮燎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赔癌,這世上最難降的妖魔是什么诞外? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮灾票,結(jié)果婚禮上峡谊,老公的妹妹穿的比我還像新娘。我一直安慰自己刊苍,他們只是感情好既们,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著正什,像睡著了一般啥纸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婴氮,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天斯棒,我揣著相機(jī)與錄音,去河邊找鬼主经。 笑死荣暮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的罩驻。 我是一名探鬼主播穗酥,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鉴腻!你這毒婦竟也來(lái)了迷扇?” 一聲冷哼從身側(cè)響起百揭,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤爽哎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后器一,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體课锌,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渺贤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雏胃。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖志鞍,靈堂內(nèi)的尸體忽然破棺而出瞭亮,到底是詐尸還是另有隱情,我是刑警寧澤固棚,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布统翩,位于F島的核電站,受9級(jí)特大地震影響此洲,放射性物質(zhì)發(fā)生泄漏厂汗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一呜师、第九天 我趴在偏房一處隱蔽的房頂上張望娶桦。 院中可真熱鬧,春花似錦汁汗、人聲如沸衷畦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霎匈。三九已至,卻和暖如春送爸,著一層夾襖步出監(jiān)牢的瞬間铛嘱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工袭厂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墨吓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓纹磺,卻偏偏與公主長(zhǎng)得像帖烘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子橄杨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容