0

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

我正在尝试使用 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
4

2 回答 2

1

这是一个常见的错误。

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

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

这里有几种获取文件的方法。

为远程 Hdfs Cluster 配置本地 hdfs-site.xml

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

SCP 和远程计算上下文

  • 将您的文件复制到远程计算机scp C:\local\path\to\file.csv user@remotehost:/tmp
  • 确保rxSetComputeContext(remotehost)
  • rxHadoopCopyFromLocal("/tmp/file.csv", "/target/on/hdfs/")
于 2017-05-24T16:03:31.250 回答
0

dplyrXdf的开发版本现在支持 HDFS 中的文件。您可以按如下方式从本机文件系统上传文件;这既适用于边缘节点,适用于远程客户端。

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

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

txt <- RxTextData("file.csv")
hd <- RxHdfsFileSystem()
hdfs_xdf <- copy_to(hd, txt, name="uploaded_xdf")
于 2017-09-04T05:30:28.693 回答