使用 pig 命令从目录中复制所有文件

Posted

技术标签:

【中文标题】使用 pig 命令从目录中复制所有文件【英文标题】:Copying all files from a directory using a pig command 【发布时间】:2015-08-11 09:48:03 【问题描述】:

嘿,我需要使用 pig 将所有文件从本地目录复制到 HDFS

在 pig 脚本中,我在源路径中使用带有通配符的 copyFromLocal 命令

即copyFromLocal /home/hive/Sample/* /user

它说源路径不存在。

当我使用 copyFromLocal /home/hive/Sample/ /user 时,它会在 HDFS 中创建另一个名为“Sample”的目录,我不需要。

但是当我包含文件名时,即/home/hive/Sample/sample_1.txt 它可以工作。

我不需要一个文件。我需要复制目录中的所有文件,而不是在 HDFS 中创建目录。

PS:我也试过 *.txt, ?,?.txt 没有通配符。

【问题讨论】:

很抱歉,请将您厌倦的复制脚本添加到您的问题中。这样我们就可以清楚地了解问题所在.. 【参考方案1】:

Pig copyFromLocal/toLocal 命令仅适用于文件或目录。它永远不会使用一系列文件(或)通配符。此外,pig 专注于处理来自/到 HDFS 的数据。据我所知,你甚至不能循环带有 ls.because 的目录中的文件列出了 HDFS 中的文件。因此,对于这种情况,我建议您编写一个 shell 脚本/操作(即 fs 命令)将文件从本地复制到 HDFS。

查看以下链接以获取信息: http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#copyFromLocal

【讨论】:

以上链接不再有效。请检查并更新此内容以供将来参考。谢谢。

以上是关于使用 pig 命令从目录中复制所有文件的主要内容,如果未能解决你的问题,请参考以下文章

使用rcp命令实现从远程机器拷贝文件

Hadoop Pig 从加载 glob 获取子目录名称并在存储中使用它

linux 怎样复制一个目录的所有文件到另一个目录

如何在不使用重命名命令的情况下递归搜索目录并从文件名中删除开/关括号? [复制]

从 Pig 脚本中的目录加载选定的文件

linux下怎么把一个文件复制到另一个文件夹