Pivotal Knowledge Base

フォローする

RでHiveを使うための設定方法

環境

  • PHD 2.X
  • CentOS 6.X

質問

RでHiveを使うためにどのように設定を行うのか。

回答

Hive ServerとHive Metastoreを含んだクラスターを設定した後、Hiveクライアントに以下の手順で設定を行う。

手順 1: Rをインストールするためのyumレポジトリーを入手する

[root@hdm1 ~]# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Retrieving http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.BONZww: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]

手順 2: yumリポジトリを更新しRをインストールする

[root@hdm1 ~]# yum clean all

もし以下のエラーが発生したら、epel.repoのmirrorlistをhttpsからhttpへ変更する。
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
例: mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

[root@hdm1 ~]# yum install R

手順 3: Rパッケージをインストールした後に、Rにjavaのpathが正しく設定されていることを確認する。正しく設定されていない場合は以下のコマンドを実行する

rootとして実行する場合: R CMD javareconf
root以外のユーザとして実行する場合: R CMD javareconf -e

手順 4: rJavaとrJDBCをインストールする

[root@hdm1 ~]# R
> install.packages("rJava")
> install.packages("RJDBC",dep=TRUE)
> q()
Save workspace image? [y/n/c]: y

手順 5: Hive Serverを起動する

[root@hdm1 ~]# $HIVE_HOME/bin/hive --service hiveserver

手順 6: RでHiveを使う

> library("DBI")
> library("rJava")
> library("RJDBC")
> hive.class.path = list.files(path=c("/usr/lib/gphd/hive/lib"), pattern="jar", full.names=T);
> hadoop.lib.path = list.files(path=c("/usr/lib/gphd/hadoop/lib"), pattern="jar", full.names=T);
> hadoop.class.path = list.files(path=c("/usr/lib/gphd/hadoop"), pattern="jar", full.names=T);
> class.path = c(hive.class.path, hadoop.lib.path, hadoop.class.path);
> drv  options(java.parameters = "-Xmx8g");
> hive.master="hdm1.phd.local:10000<http://hdm1.phd.local:10000>";
> url.dbc =  paste0("jdbc:hive://", hive.master,"/default");
> conn = dbConnect(drv, url.dbc, "gpadmin", "changeme");
log4j:WARN No appenders could be found for logger (org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
> dbListTables(conn);
[1] "hbase_table_3" "walmart_test"  "page_view"     "weblogs"
> q() 

手順 7: RでHiveを使う(Kerberos認証が有効な場合)

> library("DBI")
> library("rJava")
> library("RJDBC")
> hive.class.path = list.files(path=c("/usr/lib/gphd/hive/lib"), pattern="jar", full.names=T);
> hadoop.lib.path = list.files(path=c("/usr/lib/gphd/hadoop/lib"), pattern="jar", full.names=T);
> hadoop.class.path = list.files(path=c("/usr/lib/gphd/hadoop"), pattern="jar", full.names=T);
> mapred.class.path = list.files(path=c("/usr/lib/gphd/hadoop-mapreduce", pattern="jar", full.names=T));
> cp = c(hive.class.path, hadoop.lib.path, hadoop.class.path, mapred.class.path, "/usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-client-core.jar")
> .jinit(classpath=cp)
> drv  url.dbc =  paste0("jdbc:hive2://hdm1.phd.local:10002/default; > principal=hive/hdm1.phd.local@PHD.LOCAL");
> conn = dbConnect(drv, url.dbc, "hive", "hive");
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
> dbListTables(conn);
[1] "abctest"
> q()

コメント

Powered by Zendesk