linux—“没有这样的文件或目录”,如果进程是以编程方式运行的(从c#)

iqih9akk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(464)

我有一个将大量文件转储到目录的应用程序。我想使用hadoop命令将这些文件复制到hadoop集群。我使用以下代码来运行命令。

System.Diagnostics.ProcessStartInfo export = new System.Diagnostics.ProcessStartInfo();
export.RedirectStandardOutput = false;
export.RedirectStandardError = false;
export.UseShellExecute = false;
export.WorkingDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
export.FileName = "hadoop";
export.Arguments = "fs -copyFromLocal " + Path.Combine(dumpDirectory, "*.txt") + " " + hadoopPath));
Console.WriteLine("Copying data: hadoop " + export.Arguments);

System.Diagnostics.Process proc = System.Diagnostics.Process.Start(export);

proc.WaitForExit();
if (proc.ExitCode == 0)
{
    IEnumerable<string> files = Directory.EnumerateFiles(dumpDirectory);
    foreach (string file in files)
        File.Delete(file);
}
else
    Console.WriteLine("Error copying to Hadoop: " + proc.ExitCode);

程序写入以下消息:
复制数据:hadoop fs-copyfromlocal/directory/.txt/user/remote/directory/
copyfromlocal:local/directory/*.txt':没有这样的文件或目录 复制到hadoop时出错:1 有趣的是,当我手动运行命令时,文件复制没有错误。 另外,如果程序不使用
.txt` 并分别调用每个文件的命令,命令成功。
有人能解释一下吗?

hgqdbh6s

hgqdbh6s1#

我通过创建一个包含给定命令的bash脚本部分解决了这个问题。我以编程的方式运行bash脚本,它成功了。
但是,我仍然不知道为什么原来没有工作。

相关问题