问题导出: 在使用 Java API 实现本地文件上传到 HDFS 出现了如下所示错误 org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class ExcelUploader {
public static void main(String[] args) {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
try {
FileSystem hdfs = FileSystem.get(conf);
Path hdfsPath = new Path("/path/to/destination/file.xlsx");
Path localPath = new Path("/path/to/source/excel.xlsx");
hdfs.copyFromLocalFile(localPath, hdfsPath);
System.out.println("Excel file uploaded successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
问题主要出现在第16行使用这个函数将文件上传至hdfs,然后网上搜索了下问题出错在哪里,这里可以看下我给的参考文献2,大概的意思就是我们本地需要将这两个文件hadoop.dll和winutil.exe两个文件放到到C:\windows\system32 。 其中这两个文件是在你安装 hadoop 目录下:hadoop\bin 里面可以找到。
这样问题就完美解决了。
<br> 参考文章: