복붙노트

[HADOOP] 하이브 내부 테이블과 외부 테이블의 차이점은 무엇입니까?

HADOOP

하이브 내부 테이블과 외부 테이블의 차이점은 무엇입니까?

누구나 하이브의 외부 테이블과 내부 테이블의 차이점을 말할 수 있습니까? 테이블을 떨어 뜨릴 때 차이가 있다는 것을 압니다. 데이터가 의미하는 바를 이해하지 못하고 메타 데이터가 내부에서 삭제되고 메타 데이터 만 외부 테이블에서 삭제됩니다. 아무도 날 노드의 측면에서 설명 할 수 있습니다.

해결법

  1. ==============================

    1.Hive는 상태를 추적하기 위해 사용하는 마스터 노드에 관계형 데이터베이스를 가지고 있습니다. 예를 들어, CREATE TABLE FOO (foo string) LOCATION 'hdfs : // tmp /';이 테이블 스키마는 데이터베이스에 저장됩니다.

    Hive는 상태를 추적하기 위해 사용하는 마스터 노드에 관계형 데이터베이스를 가지고 있습니다. 예를 들어, CREATE TABLE FOO (foo string) LOCATION 'hdfs : // tmp /';이 테이블 스키마는 데이터베이스에 저장됩니다.

    파티션 된 테이블이 있다면, 파티션은 데이터베이스에 저장됩니다 (하이브는 파일 시스템으로 이동하지 않고 파티션 목록을 사용할 수 있습니다). 이러한 종류의 것들은 '메타 데이터'입니다.

    내부 테이블을 삭제하면 데이터가 삭제되고 메타 데이터도 삭제됩니다.

    외부 테이블을 삭제하면 메타 데이터 만 삭제됩니다. 그것은 하이브가 지금 그 데이터를 모르고 있다는 것을 의미합니다. 그것은 데이터 자체를 건드리지 않습니다.

  2. ==============================

    2.하이브 테이블은 EXTERNAL 또는 INTERNAL로 생성 할 수 있습니다. 이것은 데이터로드, 제어 및 관리 방법에 영향을주는 선택 사항입니다.

    하이브 테이블은 EXTERNAL 또는 INTERNAL로 생성 할 수 있습니다. 이것은 데이터로드, 제어 및 관리 방법에 영향을주는 선택 사항입니다.

    다음 경우에 EXTERNAL 테이블을 사용하십시오.

    다음 경우에 INTERNAL 테이블을 사용하십시오.

  3. ==============================

    3.외부 테이블의 경우 하이브는 데이터를웨어 하우스 디렉토리로 이동하지 않습니다. 외부 테이블을 삭제하면 테이블 메타 데이터는 삭제되지만 데이터는 삭제되지 않습니다.

    외부 테이블의 경우 하이브는 데이터를웨어 하우스 디렉토리로 이동하지 않습니다. 외부 테이블을 삭제하면 테이블 메타 데이터는 삭제되지만 데이터는 삭제되지 않습니다.

    내부 테이블의 경우 Hive는 데이터를웨어 하우스 디렉터리로 이동합니다. 테이블이 h 제되면 테이블 메타 데이터 W 데이터가 h 제됩니다.

    내부 및 외부 테이블의 차이점 :

    Hive는 내부 또는 외부 테이블을 가질 수 있습니다. 이는 데이터로드, 제어 및 관리 방법에 영향을 미치는 선택입니다.

    다음 경우에 EXTERNAL 테이블을 사용하십시오.

    다음 경우에 INTERNAL 테이블을 사용하십시오.

    출처 :

    HDInsight : 하이브 내부 및 외부 테이블 소개

    Hadoop-HIVE의 내부 및 외부 테이블

  4. ==============================

    4.내부 테이블 데이터는 Warehouse 폴더에 저장됩니다. 외부 테이블 데이터는 테이블 생성시 언급 한 위치를 나타냅니다. 그래서 내부 테이블을 삭제하면 Schema와 Warehouse 폴더 아래의 데이터가 삭제되지만 외부 테이블에서는 스키마가 느슨해집니다. 따라서 테이블을 다시 원하면 스키마가있는 테이블을 다시 만들고 해당 위치를 지정할 수 있습니다. 희망은 지금 분명하다.

    내부 테이블 데이터는 Warehouse 폴더에 저장됩니다. 외부 테이블 데이터는 테이블 생성시 언급 한 위치를 나타냅니다. 그래서 내부 테이블을 삭제하면 Schema와 Warehouse 폴더 아래의 데이터가 삭제되지만 외부 테이블에서는 스키마가 느슨해집니다. 따라서 테이블을 다시 원하면 스키마가있는 테이블을 다시 만들고 해당 위치를 지정할 수 있습니다. 희망은 지금 분명하다.

  5. ==============================

    5.외부 테이블에서 테이블을 삭제하면 테이블의 스키마 만 삭제되고 테이블 데이터는 실제 위치에 존재합니다. 그래서 삭제 된 데이터는 hadoop fs - rmr tablename을 사용합니다. 관리되는 테이블 하이브는 테이블을 완벽하게 제어합니다. 외부 테이블에서 사용자가 제어 할 수 있습니다.

    외부 테이블에서 테이블을 삭제하면 테이블의 스키마 만 삭제되고 테이블 데이터는 실제 위치에 존재합니다. 그래서 삭제 된 데이터는 hadoop fs - rmr tablename을 사용합니다. 관리되는 테이블 하이브는 테이블을 완벽하게 제어합니다. 외부 테이블에서 사용자가 제어 할 수 있습니다.

  6. ==============================

    6.제한된 연구와 테스트 (Hive 1.1.0 -cdh5.12.0 사용)에 기반한 동작의 유일한 차이점은 의도 된 사용법이 아니라 테이블을 떨어 뜨린 경우입니다

    제한된 연구와 테스트 (Hive 1.1.0 -cdh5.12.0 사용)에 기반한 동작의 유일한 차이점은 의도 된 사용법이 아니라 테이블을 떨어 뜨린 경우입니다

    (참고 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL의 'Managed and External Tables'섹션을 참조하십시오. 완전히 이해하지 못했던 몇 가지 차이점을 나열합니다)

    하이브는 다음과 같은 우선 순위에 따라 테이블을 만드는 데 필요한 위치를 선택한다고 생각합니다.

    "하이브 테이블 만들기"중에 "위치"옵션을 사용하지 않으면 위의 우선 순위 규칙이 사용됩니다. 내부 및 외부 테이블 모두에 적용 할 수 있습니다. 이는 내부 테이블이 반드시웨어 하우스 디렉토리에 상주 할 필요가 없으며 다른 위치에 상주 할 수 있음을 의미합니다.

    참고 : 일부 시나리오를 놓쳤을 지 모르지만 한정적인 탐색을 기반으로 내부 테이블과 Extenal 테이블의 동작이 위에서 설명한 한 가지 차이점 (데이터 삭제)을 제외하고 동일하게 보입니다. 내부 및 외부 테이블 모두에 대해 다음 시나리오를 시도했습니다.

  7. ==============================

    7.내부 테이블은 Hive가 삭제를 포함하여 데이터의 전체 수명주기를 관리하도록하는 반면 외부 테이블은 파일이 Hive 외부에서 사용될 때 유용합니다.

    내부 테이블은 Hive가 삭제를 포함하여 데이터의 전체 수명주기를 관리하도록하는 반면 외부 테이블은 파일이 Hive 외부에서 사용될 때 유용합니다.

  8. ==============================

    8.외부 하이브 테이블은 테이블을 삭제할 때 파일을 제거하지 않는다는 장점이 있으며, serde .... delimited와 같이 다른 설정으로 행 포맷을 설정할 수 있습니다

    외부 하이브 테이블은 테이블을 삭제할 때 파일을 제거하지 않는다는 장점이 있으며, serde .... delimited와 같이 다른 설정으로 행 포맷을 설정할 수 있습니다

  9. ==============================

    9.또한 Hive는 큰 데이터웨어 하우스입니다. 기가 바이트 또는 테라 바이트의 데이터를 잃고 싶지 않은 테이블을 삭제하고자 할 때. 해당 규모로 데이터를 생성, 이동 및 복사하는 데는 많은 시간이 소요될 수 있습니다. 'Managed'테이블 하이브를 삭제하면 해당 데이터도 휴지통에있게됩니다. '외부'테이블을 삭제하면 하이브 메타 저장소의 스키마 정의 만 제거됩니다. hdfs의 데이터는 여전히 남아 있습니다.

    또한 Hive는 큰 데이터웨어 하우스입니다. 기가 바이트 또는 테라 바이트의 데이터를 잃고 싶지 않은 테이블을 삭제하고자 할 때. 해당 규모로 데이터를 생성, 이동 및 복사하는 데는 많은 시간이 소요될 수 있습니다. 'Managed'테이블 하이브를 삭제하면 해당 데이터도 휴지통에있게됩니다. '외부'테이블을 삭제하면 하이브 메타 저장소의 스키마 정의 만 제거됩니다. hdfs의 데이터는 여전히 남아 있습니다.

  10. ==============================

    10.외부 테이블에 가장 적합한이 시나리오를 고려하십시오.

    외부 테이블에 가장 적합한이 시나리오를 고려하십시오.

    MapReduce (MR) 작업은 거대한 로그 파일을 필터링하여 n 개의 하위 로그 파일을 출력합니다 (예 : 각 하위 로그 파일에 특정 메시지 유형 로그가 포함됨). 출력은 n 개의 하위 로그 파일이 hdfs에 저장됩니다.

    이러한 로그 파일은 추가 분석을 수행하기 위해 Hive 테이블에로드됩니다.이 시나리오에서는 외부 테이블을 권장합니다. 실제 로그 파일은 외부 프로세스 즉 MR 작업이 생성되고 소유되므로 MR 작업은 각 생성 된 로그 파일을 각각의 하이브 테이블에로드하는 추가 단계.

  11. ==============================

    11.하이브의 외부 테이블을 사용하는 가장 좋은 경우는 CSV 또는 텍스트 파일에서 테이블을 만들려는 경우입니다

    하이브의 외부 테이블을 사용하는 가장 좋은 경우는 CSV 또는 텍스트 파일에서 테이블을 만들려는 경우입니다

  12. ==============================

    12.외부 테이블을 사용할 때 하이브의 메타 데이터와 원래 데이터의 하이브 만 메타 데이터 만 저장합니다. 외부 테이블을 사용할 때 우리는 테이블을 떨어 뜨릴 때 우리의 원래 데이터로는 위치를 지정할 수 있습니다

    외부 테이블을 사용할 때 하이브의 메타 데이터와 원래 데이터의 하이브 만 메타 데이터 만 저장합니다. 외부 테이블을 사용할 때 우리는 테이블을 떨어 뜨릴 때 우리의 원래 데이터로는 위치를 지정할 수 있습니다

  13. ==============================

    13.이미 HDFS에 데이터가있는 경우 외부 하이브 테이블을 만들어 데이터를 설명 할 수 있습니다. 외부 테이블의 데이터가 기본웨어 하우스 디렉토리 대신 LOCATION 특성에 지정되므로 EXTERNAL이라고합니다.

    이미 HDFS에 데이터가있는 경우 외부 하이브 테이블을 만들어 데이터를 설명 할 수 있습니다. 외부 테이블의 데이터가 기본웨어 하우스 디렉토리 대신 LOCATION 특성에 지정되므로 EXTERNAL이라고합니다.

    Hive는 내부 테이블에 데이터를 보관할 때 테이블과 데이터의 수명주기를 완벽하게 관리합니다. 내부 테이블을 삭제하면 데이터가 삭제된다는 의미입니다. 외부 테이블을 삭제하면 테이블 메타 데이터는 삭제되지만 데이터는 유지됩니다. 대부분의 경우 실수로 테이블과 함께 데이터를 삭제하지 않으려면 외부 테이블을 사용하는 것이 좋습니다.

  14. ==============================

    14.관리되는 테이블의 경우 Hive는 데이터의 수명주기를 제어합니다. Hive는 기본적으로 hive.metastore.warehouse.dir에 정의 된 디렉토리 아래의 하위 디렉토리에 관리되는 테이블의 데이터를 저장합니다.

    관리되는 테이블의 경우 Hive는 데이터의 수명주기를 제어합니다. Hive는 기본적으로 hive.metastore.warehouse.dir에 정의 된 디렉토리 아래의 하위 디렉토리에 관리되는 테이블의 데이터를 저장합니다.

    Hive는 관리되는 테이블을 삭제할 때 테이블의 데이터를 삭제하지만 관리되는 테이블은 다른 도구와 공유하기가 쉽지 않습니다. 예를 들어 Pig에서 주로 생성하여 사용하는 데이터가 있지만 그 데이터에 대해 Hive의 소유권을 부여하지는 않고 쿼리를 실행하려고합니다.

    이때 외부 테이블은 해당 데이터를 가리 키지 만 소유권은 갖지 않습니다.

  15. ==============================

    15.하이브에서 외부 테이블을 만들 수도 있습니다. Hive는웨어 하우스 디렉토리 외부의 기존 위치에있는 데이터를 참조하도록 지시합니다. 외부 테이블 삭제 메타 데이터는 삭제되지만 데이터는 삭제되지 않습니다.

    하이브에서 외부 테이블을 만들 수도 있습니다. Hive는웨어 하우스 디렉토리 외부의 기존 위치에있는 데이터를 참조하도록 지시합니다. 외부 테이블 삭제 메타 데이터는 삭제되지만 데이터는 삭제되지 않습니다.

  16. ==============================

    16.내부 용 : 테이블이 먼저 생성되고 나중에 데이터가로드됩니다.

    내부 용 : 테이블이 먼저 생성되고 나중에 데이터가로드됩니다.

    EXTERNAL : 데이터가 있으며 그 위에 테이블이 작성됩니다.

  17. ==============================

    17.간단히 말하면 두 가지가 있습니다.

    간단히 말하면 두 가지가 있습니다.

    Hive는 창고에서 물건을 관리 할 수 ​​있습니다. 즉, 창고에서 데이터를 삭제하지 않습니다. 표를 삭제할 때 :

    1) 내부 테이블의 경우 데이터가웨어 하우스에서 내부적으로 관리됩니다. 그래서 삭제됩니다.

    2) 외부 테이블의 경우 데이터가웨어 하우스에서 영원히 관리됩니다. 따라서 삭제할 수 없으며 다른 하이브 클라이언트도 사용할 수 있습니다.

  18. from https://stackoverflow.com/questions/17038414/difference-between-hive-internal-tables-and-external-tables by cc-by-sa and MIT license