Java Jdbc를 이용한 데이터베이스 접근하기
- Hive를 사용할때 결과값이 몇천건만인 경우에는 메모리가 부족해서 GC 에러가 발생이 될수가 있다.
- 여러번을 쪼개서 가지기 오기에는 Hive 특성상 일정한 시간 (Map, Reduce로 전체 데이터를 로딩을 처리하는 과정)이 걸리기 때문에 속도가 느리다
- 쿼리를 1번만에 처리를 하고 메모리가 부족하지 않게 하는 방법은 JDBC의 ResultSet를 활용을 하면 된다.
- Low Level 접근 방식중 하나인 ResultSet 디비로 부터 fetchSize만큼 데이터를 가지고 온다.
- 데이터의 결과가 큰 경우에는 ResultSet을 이용하여 Chunk 단위로 파일을 생성하는 방법으로 할수가 있다.
1. Connection 생성하기
# DriverManager를 통해 Conneciton 가지고 오기
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA92", "scott", "tiger");
# Datasource를 통해 Connection을 가지고 오기
Datasource datasource = …;
Connection conn = datasource.getConnection()
2. 쿼리 준비
PreparedStatement psmt = null;
psmt = conn.prepareStatement("DB쿼리문");
혹은
Statement stmt = null;
stmt = conn.createStatement("DB쿼리문");
4. 쿼리 실행
# 데이터를 받아오지 않는 쿼리 (insert, update, delete)
psmt.executeUpdate();
# 데이터를 가지고 오는 쿼리
ResultSet rs = null;
rs = psmt.executeQuery();
5. 데이터 가지고 오기
while(rs.next()) {
int i=1;
String id = rs.getString(i++);
String name = rs.getString(i++);
String addr = rs.getString(i++);
}
'Programing > Java' 카테고리의 다른 글
Queue 자료 구조 (0) | 2018.11.12 |
---|---|
Jackson ObjectMapper (0) | 2018.10.25 |
Guava Eventbus @AllowConcurrentEvents (0) | 2018.10.10 |
CompletableFuture (0) | 2018.09.15 |
Guava Cache (0) | 2018.09.12 |