使用 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 命令从目录中复制所有文件的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop Pig 从加载 glob 获取子目录名称并在存储中使用它