首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过R访问HDFS?

如何通过R访问HDFS?
EN

Stack Overflow用户
提问于 2018-12-06 09:59:52
回答 2查看 995关注 0票数 1

因此,我试图通过Windows机器上的R远程连接到HDFS服务器。

但是,我在"rhdfs“包中使用RStudio,因为我必须创建HADOOP_CMD环境变量,所以我将Hadoop下载到机器上,以便给出环境变量,并更改核心-site.xml。

以前我尝试过,成功地将Kerberized服务器与Keytab连接起来。

这是我的代码:

代码语言:javascript
运行
复制
Sys.setenv(HADOOP_STREAMING = 
"C:/Users/antonio.silva/Desktop/hadoop-2.7.3/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar")
Sys.setenv(HADOOP_CMD = 
"C:/Users/antonio.silva/Desktop/hadoop-2.7.3/bin/hadoop")
Sys.setenv(HADOOP_HOME = 
"C:/Users/antonio.silva/Desktop/hadoop-2.7.3")
Sys.getenv("HADOOP_STREAMING")
Sys.getenv("HADOOP_CMD")
Sys.getenv("HADOOP_HOME")

#loading libraries
library(rJava)
library(rmr2)
library(rhdfs)

#init of the classpath 
hadoop.class.path <- list.files(path = c("C:/Users/antonio.silva/Desktop/jars/hadoop/"), 
pattern = "jar", full.names = T)
.jinit(classpath=hadoop.class.path)

hdfs.init()

在执行hdfs.init()方法和执行hdfs.defaluts()之后,fs变量和工作方向是同一个目录。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-11 10:14:02

我想出了解决办法。

如果服务器具有Kerberos身份验证方法,则keytab身份验证对于访问服务器非常有用。见如何通过R与Kerberos键签连接蜂箱?

之后,它需要下载到您的计算机,在本例中,是Windows机器,该版本的Hadoop出现在集群中,并将Hadoop放在一个Windows目录中。

然后,要配置Hadoop,您需要遵循这些步骤,直到"Hadoop配置“为止。在窗口10上逐步安装Hadoop2.8.0

集群中的Hadoop包含将在本地计算机中使用的一些配置文件。这些文件是核心-site.xml、yar-site.xml、hdfs-site.xml。它们包含有关集群的信息,例如默认FS、集群中使用的凭据类型、主机名和使用的端口。

附加:要在连接到Datanodes时使用主机名,需要在hdfs-site.xml文件中添加这些行。

代码语言:javascript
运行
复制
<property>
  <name>dfs.client.use.datanode.hostname</name>
  <value>true</value>
  <description>Whether clients should use datanode hostnames when
connecting to datanodes.
</description>
  </property>

最后,在R中使用以下代码来执行连接:

代码语言:javascript
运行
复制
#set The Environment variables in R
Sys.setenv(HADOOP_HOME = "C:/Users/antonio.silva/Desktop/hadoop-2.7.3/bin/winutils.exe")
Sys.setenv(HADOOP_CMD = "C:/Users/antonio.silva/Desktop/hadoop-2.7.3/bin/hadoop")
Sys.setenv(HADOOP_STREAMING = "C:/Users/antonio.silva/Desktop/hadoop-2.7.3/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar")

library(rhdfs)


hdfs.init()
hdfs.ls("/")

所有这些都需要执行到Kerberized集群的连接。

票数 0
EN

Stack Overflow用户

发布于 2020-08-27 11:54:38

您需要重新启动R环境。如果使用Rstudio执行会话->重新启动R

现在做加载库和做

代码语言:javascript
运行
复制
 hdfs.init().
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53648755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档