我正在从 groovy 脚本执行以下 hadoop 文件系统 shell 命令,以将 hive 生成的文件移动到 hdfs。
targetFolderPath="/data/app/2016/06/30/"
srcFile=["/apps/hive/warehouse/customer_input.db/customer/year=2016/month=06/day=30/000000_0.txt.bz2"....]
dst="/data/app/2016/06/30/customer_20160630_201707151297.txt.bz2"
make_dir = " hdfs dfs -mkdir -p ${targetFolderPath} ".execute()
copy_file = " hdfs dfs -cp ${srcFile} ${dst} ".execute()
println ( " created folder ${targetFolderPath} and copied file ${srcFile} as ${dst} " )
这个命令在循环中运行。我没有收到任何错误,但出现了异常行为
第一个循环总是正确的
在第二个循环中创建了文件夹但没有复制文件。
在第三个循环中既没有创建文件夹也没有复制文件。
在随后的循环中,没有文件夹或文件被创建,
有时副本文件有 .__copying 扩展名
从 groovy 调用这个命令有什么问题? groovy不适合在hdfs上执行命令串吗?
最佳答案
认为您需要等待进程完成
在所有 .execute()
调用之后添加 .waitForProcessOutput()
关于hadoop - 从 groovy 脚本执行 Hadoop 文件系统命令时没有错误但行为奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45154218/