작성
·
185
0
답변 2
0
0
안녕하세요! 엄창용님!
주제영역별 하이브 테이블의 역할은 많이들 헷갈려 하는 부분이긴 합니다. ^^;
주신 질문에 하나씩 답변을 드리자면요..
1. 이미 smartcar_drive_info 테이블이 있으며 hue에서 조회도 가능한데 _2를 붙여 새로운 테이블을 만드는 이유가 무엇인가요?
--> smartcar_drive_info 는 HBase에 있는 데이터를 Hive로 연결해 조회 하기위해 만든 테이블 입니다.
Hive는 SQL 방식으로 데이터를 조회 하기위해서 Table 스키마를 정의하고, 해당 스키마와 원천데이터(HDFS or HBase 등)와의 포맷(구조)이 맞으면, SQL로 원천의 데이터를 조회해 볼 수 있게 해줍니다. (_info_2 테이블의 역할은 뒤에서 설명 드리 겠습니다.)
2. hbase에 적재되어있는 운행정보를 hive로 적재하기 위한 용도인가요?
--> 정확히는 Hive로 적재하기 위한게 아니고요, 앞서 말씀 드린것처럼 SQL 형식으로 HBase의 데이터를 조회 하는 용도 입니다. Hive SQL을 실행 하면 해당 테이블의 스키마 정보를 가지고 HBase에 연결해서 조회 조건에 맞는 데이터를 갖어와 보여주기만 합니다.
3. 그렇다면 hbase에 저장되어있는 정보를 활용하려고하면 매번 hive에 별도의 테이블을 만들어 저장해야 하는 걸까요?
--> HBase에 저장된 데이터는 다양한 방식으로 조회 가능합니다. 직접 Java, Python, Spark 프로그래밍을 해서 조회 할 수도 있고, 별도의 HBase 조회 Tool을 이용하거나, 실습처럼 Hive의 HBase 핸들러등을 이용해 SQL 방식으로도 조회가 가능 합니다.
4. workflow를 생성하기 위해 동일한 데이터로 유사한 테이블이 두 개씩 존재하는 건 비효율적인거 같아...
--> 네~ 저장 공간의 효율성 측면에서는 엄창용님의 생각이 맞습니다. 하지만 workflow의 마지막 단계에서 운전자의 운행정보(_info_2)와 운전자 마스터정보(smartcar_master_over18)를 조인 하는데요, 이때 HBase와 직접 연결 되어 있는 smartcar_status_info와 조인하면 HBase에 부담이 발생하고 성능상에도 문제가 있습니다. 그래서 보통은 대규모 배치성 작업을 할땐, 영향도를 최소화 하기 위해 좀더 안전하고 컴퓨팅 파워가 있는 곳으로 데이터를 복사해 놓고 작업을 하게 되는데요...그역할을 파일럿 프로젝트에선 Hive가 담당 하고, _info_2가 그 과정중 만들어진 테이블로 보시면 됩니다~
좋은 질문 감사합니다!!! - 빅디 드림