https://hazel-developer.tistory.com/286?category=926816
✅ Pig의 경우, 작업시 보여지는 모습이 스크립트 언어였지, 그 내부 구조는 MR이었던것에 비해서 hive는 자체적으로 구조화된 언어이다.
Hive는 구조화되지 않은 데이터를 가져와서 읽는 순간에 스키마를 적용한다.
구조화되지 않는 데이터와 연관된, 실제 스키마 데이터인 메타스토어(metastore)를 통해 구조화 되지 않은 텍스트 파일을 어떻게 해석할 지 알려준다. 이것이 읽기 스키마이다.
hive 접속하기
테이블을 생성할 때 CREATE 문 뒤에 EXTERNAL 키워드를 추가할 수 있다. EXTERNAL 키워드로 생성하는 테이블은'외부테이블'이라고 하는데 외부테이블은 hive.metastore.warehouse.dir 속성이 가리키는 디렉터리에 데이터를 저장하지 않고, 테이블 생성 시 설정한 경로로 데이터를 저장한다. 사용자가 실수로 테이블을 DROP 했더라도 데이터가 보존되는 장점이 있다. 다음은 외부 테이블 생성 예이다.
Managed(내부) VS External(외부) 테이블
매지니드 테이블 (Managed Table)은 내부 테이블이라고도 불리며 하이브 속성(hive.metastore.warehouse.dir)에서 정의한 디렉터리의 하위 디렉터리를 만들어서 데이터를 저장한다. 하이브에서 매니지드 테이블을 삭제할때 테이블내의 데이터가 삭제된다.외부 테이블은 테이블을 생성할때, EXTERNAL 키워드를 사용하며, LOCATION절에서 지정한 위치에 데이터가 존재한다는것을 하이브에게 알려준다. 하이브에서 외부 테이블을 삭제하면, 하이브 내에서 스키마만 삭제될 뿐 데이터는그대로 존재한다. 그래서 중요한 데이터의 경우 실수를 방지하기 위해 외부 테이블로 만드는것을 권장한다.
S3 연결형식