Criação de tabelas básicas do Hive

1. Tipos de dados especiais do Hive

        O Hive é geralmente semelhante ao mysql, mas há mais tipos de dados - tipos de dados de coleção:

        ARRAY: Os dados armazenados são do mesmo tipo

        MAP: pares chave-valor com o mesmo tipo

        STRUCT: encapsula um conjunto de campos

tipo Formatar definição
variedade ['aaa','bbb','bbb'] ARRAY<string>
mapa {'A':'Apex','B':'Abelha'} MAPA<string,string>
estrutura {'aaa',666} STRUCT<fruta:string,peso:int>

2. Crie uma tabela estática

        Instrução para criar uma tabela estática:

create table if not exists employee(
    name string,
    work_place array<string>,
    gender_age struct<gender:string,age:int>,
    skills_score map<string,int>,
    depart_title map<string,string>
)
row format delimited fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';

formato de linha delimitado    : instrução inicial de configuração do delimitador

campos terminados por '|'    : defina o separador entre os campos como "|"
itens de coleção terminados por ','  : defina o separador entre cada item de um campo de tipo complexo (array, struct) como ","
chaves de mapa terminadas por ': '    : defina o separador entre o valor da chave de um campo de tipo complexo (Mapa) como ":"
linhas terminadas por '\n';   : defina o separador entre as linhas como "\n "

        Importe dados de um arquivo local para uma tabela:

 load data local inpath '/opt/employee.txt' into table employee;

        Importe dados de um arquivo do servidor para uma tabela:

load data inpath '/employee.txt' into table employee;

        Sobrescrever dados de um arquivo em uma tabela:

load data inpath '/employee.txt' overwrite  into table employee;

3. Crie uma tabela de partições

        A instrução para criar uma tabela particionada:

create table employee2(
    name string,
    work_place array<string>,
    gender_age struct<gender:string,age:int>,
    skills_score map<string,int>,
    depart_title map<string,string>
)
partitioned by (age int) --以age作为分区依据
row format delimited 
fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';

        Importar dados para a tabela particionada:

load data local inpath '/opt/employee.txt' into table employee2 partition(age=20);
load data local inpath '/opt/employee.txt' into table employee2 partition(age=30);

        Exibir informações de partição da tabela de partições:

show partitions employee2;

4. Tabelas internas e externas

As tabelas de dados são divididas em tabelas internas e tabelas externas

Tabela interna (tabela de gerenciamento)

  • No HDFS, é uma subpasta no diretório do banco de dados ao qual pertence
  • Os dados são totalmente gerenciados pelo Hive, excluir a tabela (metadados) excluirá os dados

Tabelas Externas

  • Os dados são salvos no caminho HDFS no local especificado
  • O Hive não gerencia totalmente os dados, descartar tabelas (metadados) não exclui os dados

As duas tabelas de funcionários criadas acima são tabelas internas

        Instrução para criar uma tabela externa:


create external table if not exists employee(
    name string,
    work_place array<string>,
    gender_age struct<gender:string,age:int>,
    skills_score map<string,int>,
    depart_title map<string,string>
)
row format delimited 
fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n
location '/tmp/hivedata/employee';

Para criar uma tabela externa, adicione um externo depois de criar    

location '/tmp/hivedata/employee'; significa: especifique o caminho de armazenamento de dados (HDFS)    

Acho que você gosta

Origin blog.csdn.net/Alcaibur/article/details/129188080
Recomendado
Clasificación