Esquema de Dados Mágicos da Realeza

HadoopBeginner
Pratique Agora

Introdução

No reino encantador da Academia Real de Feitiçaria, onde a arte da magia se entrelaça com a busca pelo conhecimento, um jovem Guarda Real chamado Arthor se vê encarregado de uma missão crucial. A vasta coleção de tomos e pergaminhos antigos da Academia, contendo sabedoria e feitiços inestimáveis, tornou-se cada vez mais desorganizada ao longo dos séculos. O Mestre Mago, Merlinious, o Sábio, reconhece a necessidade urgente de estabelecer um sistema robusto e eficiente para gerenciar essa imensa riqueza de informações.

O objetivo de Arthor é projetar e implementar um esquema abrangente para os dados da Academia, garantindo que o conhecimento contido nesses registros antigos seja facilmente acessível e bem estruturado. Ao aproveitar o poder do Hadoop e seus componentes, particularmente o Hive, ele criará uma solução de gerenciamento de dados confiável e escalável que auxiliará os estudiosos e magos da Academia em sua busca por conhecimento e maestria mágica.

Configurando o Ambiente Hadoop

Nesta etapa, prepararemos o ambiente Hadoop para nossa empreitada de design de esquema. Primeiro, vamos mudar para o usuário hadoop:

su - hadoop

Depois de fazer login como usuário hadoop, navegue até o diretório /home/hadoop:

cd /home/hadoop

Agora, criaremos um novo diretório chamado academy_data para armazenar nossos arquivos de dados e esquema:

mkdir academy_data

Em seguida, precisamos garantir que os serviços Hadoop estejam em execução. Você pode verificar o status dos serviços com o seguinte comando:

hdfs dfsadmin -report

Se os serviços não estiverem em execução, você pode iniciá-los com:

start-dfs.sh
start-yarn.sh

Com o ambiente Hadoop configurado, estamos prontos para prosseguir com o design do nosso esquema.

Projetando o Esquema

Nesta etapa, projetaremos o esquema para os dados da Academia. Vamos começar analisando os dados que temos. A coleção da Academia consiste em três categorias principais: livros, pergaminhos e artefatos.

Crie um novo arquivo chamado academy_schema.hql no diretório academy_data:

cd academy_data
touch academy_schema.hql

Abra o arquivo em seu editor de texto preferido e adicione a seguinte definição de esquema:

-- academy_schema.hql

-- Create database for the Academy's data
CREATE DATABASE IF NOT EXISTS academy;

-- Switch to the academy database
USE academy;

-- Table for books
CREATE TABLE IF NOT EXISTS books (
    book_id INT,
    title STRING,
    author STRING,
    publication_year INT,
    category STRING
) COMMENT 'Table for storing book information'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- Table for scrolls
CREATE TABLE IF NOT EXISTS scrolls (
    scroll_id INT,
    title STRING,
    author STRING,
    creation_year INT,
    subject STRING
) COMMENT 'Table for storing scroll information'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

-- Table for artifacts
CREATE TABLE IF NOT EXISTS artifacts (
    artifact_id INT,
    name STRING,
    description STRING,
    origin STRING,
    age INT
) COMMENT 'Table for storing artifact information'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Neste esquema, definimos três tabelas: books, scrolls e artifacts. Cada tabela possui colunas relevantes para a respectiva categoria, como title, author, publication_year para livros e subject, creation_year para pergaminhos.

Também especificamos as cláusulas ROW FORMAT e STORED AS para garantir que os dados sejam armazenados como arquivos de texto com campos separados por vírgula.

Salve o arquivo e saia do editor de texto.

Implementando o Esquema

Agora que projetamos o esquema, é hora de implementá-lo no Hive. Primeiro, vamos iniciar o servidor Hive:

hive

Com o servidor Hive em execução, podemos executar o script de definição do esquema:

SOURCE /home/hadoop/academy_data/academy_schema.hql;

Este comando criará o banco de dados academy e as tabelas books, scrolls e artifacts com base no esquema que definimos anteriormente.

EXIT;

Em seguida, vamos preencher as tabelas com alguns dados de exemplo. Crie um novo arquivo chamado academy_data.txt no diretório academy_data:

touch academy_data.txt

Abra o arquivo em seu editor de texto e adicione os seguintes dados:

1,The Sorcerer's Stone,J.K. Rowling,1997,Fantasy
2,Scroll of Levitation,Merlinious the Wise,1023,Charms
3,Ancient Wand,A powerful wand crafted by the Elven Wandmakers,Elven Realm,2500
4,Fantastic Beasts and Where to Find Them,Newt Scamander,2001,Bestiary
5,Scroll of Healing,Gwendolyn the Healer,1157,Healing
6,Enchanted Mirror,A mirror that reveals one's true self,Avalon,5000

Salve o arquivo e saia do editor de texto.

Agora, vamos carregar os dados nas tabelas respectivas:

hive
USE academy;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE books;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE scrolls;
LOAD DATA LOCAL INPATH '/home/hadoop/academy_data/academy_data.txt' OVERWRITE INTO TABLE artifacts;

Esses comandos carregarão os dados do arquivo academy_data.txt nas tabelas correspondentes.

Finalmente, vamos verificar se os dados foram carregados corretamente:

SELECT * FROM books;
SELECT * FROM scrolls;
SELECT * FROM artifacts;

Você deve ver os dados respectivos exibidos para cada tabela.

Consultando os Dados

Com os dados carregados nas tabelas, agora podemos consultá-los para recuperar informações relevantes. Vamos tentar algumas consultas simples:

Obter todos os livros publicados no ano de 2001:

SELECT * FROM books WHERE publication_year = 2001;

Obter todos os pergaminhos relacionados ao assunto 'Charms':

SELECT * FROM scrolls WHERE subject = 'Charms';

Obter todos os artefatos com mais de 1000 anos:

SELECT * FROM artifacts WHERE age > 1000;

Essas consultas demonstram como podemos filtrar e recuperar dados específicos das tabelas com base em várias condições.

Você também pode realizar consultas mais complexas, como junções (joins) e agregações, dependendo de seus requisitos.

Resumo

Neste laboratório, exploramos o processo de design e implementação de um esquema para os dados da Royal Academy of Wizardry usando o componente Hive do Hadoop. Começamos configurando o ambiente Hadoop e criando os diretórios necessários. Em seguida, projetamos um esquema para organizar a coleção de livros, pergaminhos e artefatos da Academia em tabelas separadas.

Em seguida, implementamos o esquema criando as tabelas e carregando dados de exemplo nelas. Finalmente, demonstramos como consultar os dados usando vários filtros e condições.

Através deste laboratório, aprendemos a importância do design adequado do esquema no gerenciamento de conjuntos de dados grandes e diversos. Ao estruturar os dados em tabelas bem definidas com colunas e tipos de dados apropriados, podemos garantir o armazenamento, a recuperação e a análise eficientes das informações.

Além disso, ganhamos experiência prática com o Hive, um poderoso componente de data warehousing do Hadoop, e suas capacidades de consulta semelhantes a SQL. Essa experiência será inestimável à medida que continuarmos a trabalhar com big data e explorarmos técnicas mais avançadas para análise e processamento de dados.