Clusters E-MapReduce (EMR) nas versões 3,42 ou posteriores, ou 5.8.0 ou posteriores, suportam o OSS-HDFS (JindoFS) como armazenamento de dados. O OSS-HDFS oferece aceleração de cache e autenticação via Ranger, o que melhora o desempenho e simplifica 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 EMR para acessar dados no OSS-HDFS.
Informações gerais
O OSS-HDFS é um service de armazenamento para data lake nativo em cloud. Com seu gerenciamento unificado de metadados, é totalmente compatível com a interface do sistema de arquivos HDFS e oferece suporte abrangente a POSIX. Isso o torna ideal para uma ampla variedade de cenários de computação em data lake envolvendo big data e IA. Para mais informações, consulte What is OSS-HDFS?.
Procedimento
Este tópico usa o Hive como exemplo para demonstrar como operar dados no OSS-HDFS. Siga etapas semelhantes para realizar as mesmas operações com o Spark.
Faça login no cluster. Para mais informações, consulte Log on to a cluster.
-
Crie uma tabela Hive que aponte para o OSS-HDFS.
-
Execute o comando a seguir para entrar na linha de comando do Hive.
hive -
Execute o comando a seguir para crie 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: O nome do banco de dados. Você pode personalizar este nome.{path}: O caminho no OSS-HDFS para armazenar o banco de dados. Você pode personalizar este caminho.-
{yourHdfsBucketDomain}: O nome de domínio do bucket para o service OSS-HDFS.Para obter o endpoint, acesse o OSS console e navegue até o bucket desejado. Na aba Overview, na seção Access Ports, copie o endpoint completo do bucket referente ao OSS-HDFS.
NotaEste exemplo usa o nome de domínio do OSS-HDFS como prefixo do caminho. Caso queira usar apenas o nome do bucket para apontar para o OSS-HDFS, configure um endpoint no nível do bucket ou um endpoint global. Para mais informações, consulte Appendix 1: Other ways to configure an 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 exibe os dados inseridos anteriormente.
OK 1 John Doe 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)