Para responder a sua pergunta:
Para tabelas externas, o Hive armazena os dados no LOCAL especificado durante a criação da tabela (geralmente não no diretório do warehouse). Se a tabela externa for eliminada, os metadados da tabela serão excluídos, mas não os dados.
Para tabelas internas, o Hive armazena dados em seu diretório de warehouse. Se a tabela for descartada, os metadados e os dados da tabela serão excluídos.
Para sua referência,
Diferença entre tabelas internas e externas:
Para tabelas externas -
A tabela externa armazena arquivos no servidor HDFS, mas as tabelas não estão totalmente vinculadas ao arquivo de origem.
Se você excluir uma tabela externa, o arquivo ainda permanecerá no servidor HDFS.
Por exemplo, se você criar uma tabela externa chamada “table_test” no HIVE usando HIVE-QL e vincular a tabela ao arquivo “file” , então deletar “table_test” do HIVE não irá deletar “file” do HDFS .
Os arquivos de tabelas externas podem ser acessados por qualquer pessoa que tenha acesso à estrutura de arquivos HDFS e, portanto, a segurança precisa ser gerenciada no nível de arquivo / pasta HDFS.
Os metadados são mantidos no nó mestre e a exclusão de uma tabela externa do HIVE exclui apenas os metadados, não os dados / arquivo.
Para tabelas internas-
- Armazenado em um diretório com base nas configurações em
hive.metastore.warehouse.dir
,
por padrão, as tabelas internas são armazenadas no seguinte diretório “/ user / hive / warehouse”, você pode alterá-lo atualizando o local no arquivo de configuração.
- Excluir a tabela exclui os metadados e dados do nó mestre e HDFS, respectivamente.
- A segurança do arquivo da tabela interna é controlada exclusivamente pelo HIVE. A segurança precisa ser gerenciada dentro do HIVE, provavelmente no nível do esquema (depende da organização).
O Hive pode ter tabelas internas ou externas, esta é uma escolha que afeta como os dados são carregados, controlados e gerenciados.
Use tabelas EXTERNAL quando:
- Os dados também são usados fora do Hive . Por exemplo, os arquivos de dados são lidos e processados por um programa existente que não bloqueia os arquivos.
- Os dados precisam permanecer no local subjacente mesmo depois de DROP TABLE. Isso pode se aplicar se você estiver apontando vários esquemas (tabelas ou visualizações) em um único conjunto de dados ou se estiver iterando por meio de vários esquemas possíveis.
- O Hive não deve possuir dados e configurações de controle, diretórios, etc. , Você pode ter outro programa ou processo que fará essas coisas.
- Você não está criando uma tabela com base na tabela existente (AS SELECT).
Use tabelas INTERNAS quando:
- Os dados são temporários .
- Você deseja que o Hive gerencie completamente o ciclo de vida da tabela e dos dados .
Fonte :
HDInsight: introdução às tabelas internas e externas do Hive
Tabelas internas e externas no Hadoop- HIVE