Apache Tajo - Gerenciamento de Tabela

Uma tabela é uma visão lógica de uma fonte de dados. Ele consiste em um esquema lógico, partições, URL e várias propriedades. Uma tabela Tajo pode ser um diretório no HDFS, um único arquivo, uma tabela HBase ou uma tabela RDBMS.

Tajo suporta os seguintes dois tipos de tabelas -

  • mesa externa
  • mesa interna

Mesa Externa

A tabela externa precisa da propriedade local quando a tabela é criada. Por exemplo, se seus dados já estiverem lá como arquivos Texto / JSON ou tabela HBase, você pode registrá-los como tabela externa Tajo.

A consulta a seguir é um exemplo de criação de tabela externa.

create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';

Aqui,

  • External keyword- Isso é usado para criar uma tabela externa. Isso ajuda a criar uma mesa no local especificado.

  • Amostra refere-se ao nome da tabela.

  • Location- É um diretório para HDFS, Amazon S3, HBase ou sistema de arquivos local. Para atribuir uma propriedade de localização para diretórios, use os exemplos de URI abaixo -

    • HDFS - hdfs: // localhost: porta / caminho / para / tabela

    • Amazon S3 - s3: // nome do intervalo / tabela

    • local file system - arquivo: /// caminho / para / tabela

    • Openstack Swift - swift: // nome do balde / tabela

Propriedades da Tabela

Uma tabela externa possui as seguintes propriedades -

  • TimeZone - Os usuários podem especificar um fuso horário para ler ou escrever uma tabela.

  • Compression format- Usado para tornar o tamanho dos dados compacto. Por exemplo, o arquivo text / json usacompression.codec propriedade.

Mesa Interna

Uma tabela interna também é chamada de Managed Table. Ele é criado em um local físico predefinido chamado Tablespace.

Sintaxe

create table table1(col1 int,col2 text);

Por padrão, o Tajo usa “tajo.warehouse.directory” localizado em “conf / tajo-site.xml”. Para atribuir um novo local para a tabela, você pode usar a configuração do Tablespace.

Tablespace

O espaço de tabela é usado para definir locais no sistema de armazenamento. Ele é compatível apenas com tabelas internas. Você pode acessar os espaços de tabela por seus nomes. Cada espaço de tabela pode usar um tipo de armazenamento diferente. Se você não especificar os espaços de tabela, o Tajo usará o espaço de tabela padrão no diretório raiz.

Configuração de Tablespace

Você tem “conf/tajo-site.xml.template”no Tajo. Copie o arquivo e renomeie-o para“storagesite.json”. Este arquivo funcionará como uma configuração para Tablespaces. Os formatos de dados Tajo usam a seguinte configuração -

Configuração HDFS

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         "uri": “hdfs://localhost:9000/path/to/Tajo"  
      } 
   } 
}

Configuração HBase

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         "uri": “hbase:zk://quorum1:port,quorum2:port/"  
      } 
   } 
}

Configuração de arquivo de texto

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         “uri”: “hdfs://localhost:9000/path/to/Tajo” 
      } 
   } 
}

Criação de Tablespace

Os registros da tabela interna do Tajo podem ser acessados ​​somente de outra tabela. Você pode configurá-lo com o espaço de tabela.

Sintaxe

CREATE TABLE [IF NOT EXISTS] <table_name> [(column_list)] [TABLESPACE tablespace_name] 
[using <storage_type> [with (<key> = <value>, ...)]] [AS <select_statement>]

Aqui,

  • IF NOT EXISTS - Isso evita um erro se a mesma tabela ainda não tiver sido criada.

  • TABLESPACE - Esta cláusula é usada para atribuir o nome do espaço de tabela.

  • Storage type - Os dados Tajo suportam formatos como texto, JSON, HBase, Parquet, Sequencefile e ORC.

  • AS select statement - Selecione registros de outra tabela.

Configurar Tablespace

Inicie seus serviços Hadoop e abra o arquivo “conf/storage-site.json”e adicione as seguintes alterações -

$ vi conf/storage-site.json { 
   "spaces": {  
      “space1”: {  
         "uri": “hdfs://localhost:9000/path/to/Tajo" 
      } 
   } 
}

Aqui, Tajo irá se referir aos dados da localização do HDFS e space1é o nome do espaço de tabela. Se você não iniciar os serviços Hadoop, não poderá registrar o espaço de tabela.

Inquerir

default> create table table1(num1 int,num2 text,num3 float) tablespace space1;

A consulta acima cria uma tabela chamada “tabela1” e “espaço1” refere-se ao nome do espaço de tabela.

Formatos de dados

Tajo suporta formatos de dados. Vamos examinar cada um dos formatos, um por um, em detalhes.

Texto

Um arquivo de texto simples de valores separados por caracteres representa um conjunto de dados tabular que consiste em linhas e colunas. Cada linha é uma linha de texto simples.

Criando mesa

default> create external table customer(id int,name text,address text,age int) 
   using text with('text.delimiter'=',') location ‘file:/Users/workspace/Tajo/customers.csv’;

Aqui, “customers.csv” arquivo refere-se a um arquivo de valor separado por vírgula localizado no diretório de instalação do Tajo.

Para criar uma tabela interna usando o formato de texto, use a seguinte consulta -

default> create table customer(id int,name text,address text,age int) using text;

Na consulta acima, você não atribuiu nenhum espaço de tabela, portanto, ele usará o espaço de tabela padrão de Tajo.

Propriedades

Um formato de arquivo de texto tem as seguintes propriedades -

  • text.delimiter- Este é um caractere delimitador. O padrão é '|'.

  • compression.codec- Este é um formato de compressão. Por padrão, ele está desabilitado. você pode alterar as configurações usando o algoritmo especificado.

  • timezone - A mesa usada para ler ou escrever.

  • text.error-tolerance.max-num - O número máximo de níveis de tolerância.

  • text.skip.headerlines - O número de linhas de cabeçalho por omitido.

  • text.serde - Esta é uma propriedade de serialização.

JSON

Apache Tajo suporta o formato JSON para consulta de dados. Tajo trata um objeto JSON como registro SQL. Um objeto é igual a uma linha em uma tabela Tajo. Vamos considerar “array.json” da seguinte forma -

$ hdfs dfs -cat /json/array.json { 
   "num1" : 10, 
   "num2" : "simple json array", 
   "num3" : 50.5 
}

Depois de criar esse arquivo, mude para o shell Tajo e digite a consulta a seguir para criar uma tabela usando o formato JSON.

Inquerir

default> create external table sample (num1 int,num2 text,num3 float) 
   using json location ‘json/array.json’;

Lembre-se sempre de que os dados do arquivo devem corresponder ao esquema da tabela. Caso contrário, você pode omitir os nomes das colunas e usar * que não requer lista de colunas.

Para criar uma tabela interna, use a seguinte consulta -

default> create table sample (num1 int,num2 text,num3 float) using json;

Parquet

Parquet é um formato de armazenamento colunar. Tajo usa o formato Parquet para um acesso fácil, rápido e eficiente.

Criação de mesa

A consulta a seguir é um exemplo de criação de tabela -

CREATE TABLE parquet (num1 int,num2 text,num3 float) USING PARQUET;

O formato de arquivo Parquet tem as seguintes propriedades -

  • parquet.block.size - tamanho de um grupo de linhas sendo armazenado em buffer na memória.

  • parquet.page.size - O tamanho da página é para compressão.

  • parquet.compression - O algoritmo de compressão usado para comprimir páginas.

  • parquet.enable.dictionary - O valor booleano serve para ativar / desativar a codificação do dicionário.

RCFile

RCFile é o arquivo colunar do registro. Consiste em pares binários de chave / valor.

Criação de mesa

A consulta a seguir é um exemplo de criação de tabela -

CREATE TABLE Record(num1 int,num2 text,num3 float) USING RCFILE;

RCFile tem as seguintes propriedades -

  • rcfile.serde - classe de desserializador customizado.

  • compression.codec - algoritmo de compressão.

  • rcfile.null - caractere NULL.

SequenceFile

SequenceFile é um formato de arquivo básico no Hadoop que consiste em pares de chave / valor.

Criação de mesa

A consulta a seguir é um exemplo de criação de tabela -

CREATE TABLE seq(num1 int,num2 text,num3 float) USING sequencefile;

Este arquivo de sequência tem compatibilidade com Hive. Isso pode ser escrito no Hive como,

CREATE TABLE table1 (id int, name string, score float, type string) 
STORED AS sequencefile;

ORC

ORC (Optimized Row Columnar) é um formato de armazenamento colunar do Hive.

Criação de mesa

A consulta a seguir é um exemplo de criação de tabela -

CREATE TABLE optimized(num1 int,num2 text,num3 float) USING ORC;

O formato ORC tem as seguintes propriedades -

  • orc.max.merge.distance - O arquivo ORC é lido, ele se funde quando a distância é menor.

  • orc.stripe.size - Este é o tamanho de cada faixa.

  • orc.buffer.size - O padrão é 256 KB.

  • orc.rowindex.stride - Este é o avanço do índice ORC em número de linhas.