关键就是创建fs的时候,需要指明schema:har://scheme-hostname:port/archivepath/fileinarchive
到最上层的archive文件目录即可。
fs = hdfsConnect(“har://hdfs-172.16.48.4:9000/qhl/real_archive_max/archive_max.har/“,9000);
需要注意的是,上面必须要以”/“结尾,否则hdfs就会认为是文件,而不是目录,就会报文件不存在的错误。
执行命令如下, hello.csv_4是archive_max.har里面归档前的一个文件。即har://hdfs-172.16.48.4:9000/qhl/real_archive_max/archive_max.har/hello.csv_4是一个完成的归档后的文件。
1 | ./hdfs_small_file_optim hello.csv_4 100 100 |
附录
编译脚本
1 | #!/bin/bash |
测试代码
1 | #include "hdfs.h" |