簡體   English   中英

R Hive 節儉客戶端

[英]R Hive Thrift Client

我正在努力為我公司的 R 數據訪問包添加 HiveServer2 支持。 我很好奇生成 R Thrift 客戶端的最佳方式是什么。 我正在考慮圍繞 Java Thrift 客戶端編寫 R 包裝器,類似於rhbase所做的,但如果可能的話,我更喜歡純 R 解決方案。

注意事項:

  • HiveServer2 thrift 服務器與原始 Hive Thrift 服務器不同。
  • 我查看並使用了RHive包。 在我遇到的其他問題中,它需要系統安裝 Hadoop 和 Hive,這在 R 客戶端計算機上並不總是可用。
  • 我有點可怕 - 但目前足夠 - 解決方法是將beeline客戶端包裝在一些 R 優點中。

這個問題的確切范圍對於 Stackoverflow 來說可能太寬泛了,提問者確認他放棄了這個任務,但對於未來的讀者來說,這可能是要尋找的東西:

從 R 中,您可以使用 JDBC 連接到 Hive。

這並不完全是提問者的目的,但在大多數情況下應該可以達到目的。


解決方案的關鍵部分是 RJDBC 包,這里是Cloudera Community上的一些示例代碼

library(DBI)
library(rJava)
library(RJDBC)
hadoop.class.path = list.files(path=c("/usr/hdp/2.4.0.0-169/hadoop"),pattern="jar", full.names=T);
hive.class.path = list.files(path=c("/usr/hdp/current/hive-client/lib"),pattern="jar", full.names=T);
hadoop.lib.path = list.files(path=c("/usr/hdp/current/hive-client/lib"),pattern="jar",full.names=T);
mapred.class.path = list.files(path=c("/usr/hdp/current/hadoop-mapreduce-client/lib"),pattern="jar",full.names=T);
cp = c(hive.class.path,hadoop.lib.path,mapred.class.path,hadoop.class.path)
drv <- JDBC("org.apache.hive.jdbc.HiveDriver","hive-jdbc.jar",identifier.quote="`")
conn <- dbConnect(drv, "jdbc:hive2://ixxx:10000/default", "hive", "hive")
show_databases <- dbGetQuery(conn, "show databases")

完全披露:我是cloudera的員工。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM