2017-05-23 30 views
0

从Windows复制到远程HDFS的正确语法是什么?rxHadoopCopyFromLocal从Windows

我试图将文件从我的本地机器复制到使用RStudio

远程Hadoop集群
rxHadoopCopyFromLocal("C:/path/to/file.csv", "/target/on/hdfs/") 

这将引发

copyFromLocal '/path/to/file.csv': no such file or directory` 

注意在C:/消失。

这句法也没有

rxHadoopCopyFromLocal("C:\\path\\to\\file.csv", "/target/on/hdfs/") 

错误

-copyFromLocal: Can not create a Path from a null string 

回答

1

这是一个常见的错误。

原来,rxHadoopCopyFromLocal命令是hdfs fs -copyFromLocal的包装。它所做的只是从本地文件系统复制到hdfs目标。

在这种情况下,rxSetComputeContext(remotehost)被设置为远程集群。在远程计算机上,没有C:\ path \ to \ file.csv

以下是几种获取文件的方法。

配置本地HDFS-site.xml中远程HDFS集群

  • 确保您的Hadoop工具安装在本地计算机上
  • 编辑您的本地HDFS-site.xml中指向远程集群
  • 确保rxSetComputeContext("local")
  • 运行rxHadoopCopyFromLocal("C:\local\path\to\file.csv", "/target/on/hdfs/")

SCP和远程计算上下文

  • 您的文件复制到远程机器scp C:\local\path\to\file.csv [email protected]:/tmp
  • 确保rxSetComputeContext(remotehost)
  • 运行rxHadoopCopyFromLocal("/tmp/file.csv", "/target/on/hdfs/")
+0

MRS 9。1还有'rxHadoopCopyFromClient'用于从客户端复制远程集群。不知道它是否在早期版本。 –

0

dev version of dplyrXdf现在支持HDFS文件。您可以按照以下方式从本地文件系统上传文件;这适用于来自远程客户端的边缘节点

hdfs_upload("c\\path\\to\\file.csv", "/target/on/hdfs") 

如果你有数据集(R对象),您要上传,您也可以使用标准的dplyr copy_to动词。这会将数据导入到Xdf文件并上传,并返回指向上传文件的RxXdfData数据源。

txt <- RxTextData("file.csv") 
hd <- RxHdfsFileSystem() 
hdfs_xdf <- copy_to(hd, txt, name="uploaded_xdf")