在 R 和 Hive (Hadoop) 数据库之间建立连接

发布于 2024-11-08 02:59:06 字数 461 浏览 0 评论 0原文

有谁知道如何实现这一目标?

我假设 RJDBC 会有所帮助;但根据我(可能很天真的)的理解,为此编写或调整 Hive 驱动程序需要进行一些调整。

相关文档:

欢迎任何帮助或建议!如果以前没有人这样做过,我很乐意为解决方案编写一些代码,但我几乎不知道 Java。

Does anyone know how to achieve that?

I am assuming that RJDBC would help; but from my (likely naive) understanding, a bit of tweaking is necessary to write or adapt a Hive driver for this.

Relevant documentation:

Any help or suggestion is welcome! If no one did this before, I would be happy to code a bit towards a solution but I know next to no Java.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽容 2024-11-15 02:59:06

R 可以通过 RJDBC 与 Hive 连接。但是,您需要 Hive 服务器和驱动程序。

Hive 服务器:

hive --service hiveserver 1> /dev/null 2> /dev/null &

驱动程序:下载 Toad for Cloud DB,http://www.toadworld.com/ m/freeware/566.aspx,并使用其中包含的驱动程序(解压缩 jar 并查找下面的文件)。

下面是一个 R 函数,您可以定义它来创建与 Hive 服务器的连接。

hive_connection <- function(   hostname= 'dlhive01.cloud.msrch', port= 10000, lib_dir ){
  library( RJDBC )

  hive_jars <- c('commons-logging-1.0.4.jar','hadoop-core-0.20.2+737.jar',    'hive-exec-0.7.1-cdh3u1.jar', 'hive-jdbc-0.7.1-cdh3u1.jar',    'hive-metastore-0.7.1-cdh3u1.jar', 'hive-service-0.7.1-cdh3u1.jar', 'libfb303.jar','libthrift.jar', 'log4j-1.2.15.jar', 'slf4j-api-1.6.1.jar', 'slf4j-log4j12-1.6.1.jar' )

  # lib_dir: directory containing the jars above.
  hive_class_path <- sprintf( '%s/%s', lib_dir, hive_jars )

  drv <- JDBC( 'org.apache.hadoop.hive.jdbc.HiveDriver',   classPath=  hive_class_path, "`" )

  server <- sprintf( 'jdbc:hive://%s:%s/default', hostname, port )

  return ( dbConnect( drv, server ) )
}

R can be interfaced with Hive via RJDBC. However, you'll need a Hive server and drivers.

Hive server:

hive --service hiveserver 1> /dev/null 2> /dev/null &

Drivers: download Toad for Cloud DBs, http://www.toadworld.com/m/freeware/566.aspx, and use drivers included there (unzip the jars and look for the files below).

Below is an R function that you can define to create a connection to a Hive server.

hive_connection <- function(   hostname= 'dlhive01.cloud.msrch', port= 10000, lib_dir ){
  library( RJDBC )

  hive_jars <- c('commons-logging-1.0.4.jar','hadoop-core-0.20.2+737.jar',    'hive-exec-0.7.1-cdh3u1.jar', 'hive-jdbc-0.7.1-cdh3u1.jar',    'hive-metastore-0.7.1-cdh3u1.jar', 'hive-service-0.7.1-cdh3u1.jar', 'libfb303.jar','libthrift.jar', 'log4j-1.2.15.jar', 'slf4j-api-1.6.1.jar', 'slf4j-log4j12-1.6.1.jar' )

  # lib_dir: directory containing the jars above.
  hive_class_path <- sprintf( '%s/%s', lib_dir, hive_jars )

  drv <- JDBC( 'org.apache.hadoop.hive.jdbc.HiveDriver',   classPath=  hive_class_path, "`" )

  server <- sprintf( 'jdbc:hive://%s:%s/default', hostname, port )

  return ( dbConnect( drv, server ) )
}
時窥 2024-11-15 02:59:06

我还没有测试过这些,但尝试 RHIPEhive 包。

请参阅此 quora 问题(特别是 Jeff Hammerbacher 的回答) )以讨论其他选项。

I haven't tested these, but try the RHIPE and hive packages.

See this quora question (particularly Jeff Hammerbacher's answer) for a discussion of other options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文