拼接文件路径时使用了IOUtils.DIR_SEPARATOR
tmpFilePath = String.format("%s__%s%s", userPath, tmpSuffix, IOUtils.DIR_SEPARATOR)
在Windows下会通过""拼接。但实际Hdfs上应该都是Linux的"/"。然后导致在HdfsHelper.renameFile方法中,获取父级目录时用的是hadoop-common的Path.getParent,会导致越过一级目录从而将整个数据库删除(如果是hive目录)
tmpFilesParent = srcFilePah.getParent();
建议HdfsWriter文件中拼接路径统一采用Linux的分隔符
1条答案
按热度按时间83qze16e1#
这个我今天在群里也看到了,windows环境直接删除整个目录。删库跑路现场版