Clusters do E-MapReduce (EMR) nas versões 3.42 ou posterior, ou 5.8.0 ou posterior, oferecem suporte ao OSS-HDFS (JindoFS) como armazenamento de dados. O OSS-HDFS fornece aceleração de cache e autenticação Ranger, melhorando o desempenho e simplificando a migração do HDFS em cenários de ETL de big data com Hive ou Spark. Este tópico descreve como usar o Hive ou o Spark em um cluster do EMR para acessar dados no OSS-HDFS.
Informações básicas
O OSS-HDFS é um serviço de armazenamento de data lake nativo da nuvem. Com gerenciamento unificado de metadados, ele é totalmente compatível com a interface do sistema de arquivos HDFS e oferece suporte abrangente ao POSIX. Essas características o tornam ideal para diversos cenários de computação de data lake em big data e IA. Para mais informações, consulte O que é o OSS-HDFS?.
Procedimento
Este tópico usa o Hive como exemplo para demonstrar a operação de dados no OSS-HDFS. Siga etapas semelhantes para executar o mesmo procedimento com o Spark.
Faça login no cluster. Para mais informações, consulte Fazer login em um cluster.
-
Crie uma tabela do Hive que aponte para o OSS-HDFS.
-
Execute o comando a seguir para acessar a linha de comando do Hive.
hive -
Execute o comando a seguir para criar um banco de dados que aponte para o OSS-HDFS.
CREATE DATABASE if not exists dw LOCATION 'oss://{yourHdfsBucketDomain}/{path}';Descrição dos parâmetros:
dw: Nome do banco de dados. Personalize esse nome conforme necessário.{path}: Caminho no OSS-HDFS para armazenar o banco de dados. Personalize esse caminho conforme necessário.-
{yourHdfsBucketDomain}: Nome de domínio do bucket para o serviço OSS-HDFS.Para obter o endpoint, faça login no OSS console. Acesse o bucket desejado. Na aba Overview, na seção Access Ports, copie o endpoint completo do bucket referente ao OSS-HDFS.
NotaEste exemplo utiliza o nome de domínio do OSS-HDFS como prefixo do caminho. Para usar apenas o nome do bucket como referência ao OSS-HDFS, configure um endpoint no nível do bucket ou um endpoint global. Para mais detalhes, consulte Apêndice 1: Outras formas de configurar um endpoint.
-
Execute o comando a seguir para usar o novo banco de dados.
use dw; -
Execute o comando a seguir para criar uma tabela no novo banco de dados.
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details';
-
-
Insira dados na tabela.
Use a instrução INSERT INTO para gravar dados na tabela. Essa instrução gera um job MapReduce.
INSERT INTO employee(eid, name, salary, destination) values(1, 'John Doe', '100.0', ''); -
Verifique os dados da tabela.
SELECT * FROM employee WHERE eid = 1;A saída inclui os dados inseridos.
OK 1 John Doe 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)