HadoopcopyToLocal正在目标目录中创建.crc文件以及实际的数据文件,这对我来说是不必要的,并且会干扰我的进一步数据处理。有没有办法避免创建它而不是稍后删除它?
val config = new Configuration()
val fs = FileSystem.get(config)
fs.copyToLocalFile(new Path(src),new Path(dest))
Run Code Online (Sandbox Code Playgroud)
Maven 依赖:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在复制文件之前,请使用其中一项或两项
fs.setWriteChecksum(false)
fs.setVerifyChecksum(false)
Run Code Online (Sandbox Code Playgroud)
然而,正如我所提到的,它是一个文件校验和,这意味着它对于验证成功副本是必要的。如果您有一个具有不同内容的同名文件,那么它实际上是一个不同的文件,您可能应该处理这种情况。
java中还有另一个版本的copyToLocal函数。
fs.copyToLocalFile(boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem);
Run Code Online (Sandbox Code Playgroud)
其中RawLocalFileSystem是非crc文件系统。所以,它不会在本地创建任何crc文件
**delSrc** whether to delete the src
**src** path
**dst** path
**useRawLocalFileSystem** whether to use RawLocalFileSystem as local file system or not.
Run Code Online (Sandbox Code Playgroud)
因此,使 useRawLocalFileSystem=true 将解决您的问题。