java創建文件並寫入hdfs
在網上找了好幾個java寫入hdfs的,都是用IOUtils.copy()寫入的,最後找到了不是用IOUtils.copy()寫入的,趕緊自己整理一下。
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
public class testCreate {
public static void main(String[] args)
throws URISyntaxException, IOException, InterruptedException {
FileSystem fileSystem=FileSystem.get(
new URI("hdfs://172.0.0.1:9000"),
new Configuration(),"root"
);
try {
OutputStream output = fileSystem.create(new Path("/test/t1"));
// 使用\t作爲分隔符
output.write("1\t1".getBytes("UTF-8"));
output.write("\n".getBytes("UTF-8"));//換行
fileSystem.close();
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
你都會用java了,肯定也會用scala… 嘿嘿。
java寫入hdfs - 追加寫
如果不能使用創建寫,得追加寫入,那怎麼辦呢?
除了第19行,其他代碼都不變。
OutputStream output = fileSystem.append(new Path("/test/t1"));
你都會用java了,肯定也會用scala… 嘿嘿。
pom.xml
貼一下pom.xml
<properties>
<hadoop.version>2.6.0</hadoop.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>