빅데이터/하둡
Java로 AWS s3에 간단히 file write하기(hadoop-aws 라이브러리 사용, NativeS3FileSystem)
AndersonChoi
2019. 7. 11. 11:33
S3는 Simple Storage Service의 약자로 AWS의 강력한 object storage이다.
요구사항에 따라 Java code를 사용하여 aws s3에 file을 write해야할 때가 있다. aws-java-sdk를 사용해도 되지만 apache hadoop에서 제공하는 hadoop-aws를 사용하여 간단하게 file write가 가능하다.
단계 1) 디펜던시 추가
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
</dependencies>
단계 2) AWS에서 secretawsAccessKeyId, awsSecretAccessKey 발급
단계 3) 코딩
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Main {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.default.name", "s3n://버킷이름");
conf.set("fs.s3n.awsAccessKeyId", "AKIAJWFKNFXXXXXXXX");
conf.set("fs.s3n.awsSecretAccessKey", "xLI7y18tTXXXXXXXXnCfWXXXXXXXX");
FileSystem dfs = FileSystem.get(conf);
Path filenamePath = new Path("/tmp/test/test.log");
FSDataOutputStream out = dfs.create(filenamePath);
out.writeUTF("Hello, world!\n");
out.close();
FSDataInputStream in = dfs.open(filenamePath);
String messageIn = in.readUTF();
System.out.print(messageIn);
in.close();
dfs.close();
}
}
데이터 확인
amazon s3에 계정으로 들어가서 버킷에 들어가보면 지정된 경로에 정상적으로 데이터가 저장된 모습을 볼 수 있다.
반응형