Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Usar um cluster do Iceberg com o Hive - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar um cluster do Iceberg com o Hive

Com as versões 6.9.0 e posteriores do Amazon EMR, você pode usar o Iceberg com um cluster do Hive sem precisar executar as etapas de configuração necessárias para a integração do IcebergHive de código aberto. Para as versões 6.8.0 e anteriores do Amazon EMR, você pode usar uma ação de bootstrap para instalar o jar iceberg-hive-runtime e configurar o suporte do Hive para Iceberg.

O Amazon EMR 6.9.0 inclui todos os atributos para a integração do Hive 3.1.3 com o Iceberg 0.14.1 e também inclui atributos adicionais do Amazon EMR, como seleção automática de mecanismos de execução compatíveis em runtime (Amazon EMR no EKS 6.9.0).

Criar um cluster do Iceberg

Você pode criar um cluster com o Iceberg instalado usando o AWS Management Console, o AWS CLI ou a API do Amazon EMR. Neste tutorial, você usa o AWS CLI para trabalhar com o Iceberg em um cluster do Amazon EMR. Para usar o console para criar um cluster com o Iceberg instalado, siga as etapas em Criar um data lake no Iceberg usando o Amazon Athena, o Amazon EMR e o AWS Glue.

Para usar o Iceberg no Amazon EMR com AWS CLI o, primeiro crie um cluster usando as etapas abaixo. Para obter informações sobre como especificar a classificação Iceberg usando o AWS CLI ou o Java SDK, consulte ou. Forneça uma configuração usando o AWS CLI ao criar um cluster Fornecer uma configuração usando o SDK do Java ao criar um cluster Crie um arquivo chamado configurations.json com o seguinte conteúdo:

[{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]

Em seguida, crie um cluster com a configuração a seguir, substituindo o exemplo de caminho do bucket do Amazon S3 e o ID da sub-rede pelos seus próprios:

aws emr create-cluster --release-label emr-6.9.0 \ --applications Name=Hive \ --configurations file://iceberg_configurations.json \ --region us-east-1 \ --name My_hive_Iceberg_Cluster \ --log-uri s3://amzn-s3-demo-bucket/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef

Um cluster do Iceberg no Hive faz o seguinte:

  • Carrega o jar de runtime do Hive no Iceberg no Hive e habilita a configuração relacionada ao Iceberg para o mecanismo do Hive.

  • Permite a seleção dinâmica do mecanismo de execução do Hive no Amazon EMR para impedir que os usuários configurem um mecanismo de execução compatível com o Iceberg.

nota

Atualmente, os clusters Hive Iceberg não são compatíveis com o AWS Glue Data Catalog. O catálogo padrão do Iceberg é HiveCatalog, que corresponde ao metastore configurado para o ambiente Hive. Para obter mais informações sobre gerenciamento de catálogos, consulte Usando HCatalog na documentação do Apache Hive.

Suporte a recursos

O Amazon EMR versão 6.9.0 é compatível com o Hive 3.1.3 e o Iceberg 0.14.1. O suporte a atributos é limitado aos atributos compatíveis com o Iceberg para o Hive 3.1.2 e 3.1.3. Os seguintes comandos são compatíveis:

  • Com as versões 6.9.0 a 6.12.x do Amazon EMR, você deve incluir o jar libfb303 no diretório auxlib do Hive. Use o seguinte comando para instalar:

    sudo /usr/bin/ln -sf /usr/lib/hive/lib/libfb303-*.jar /usr/lib/hive/auxlib/libfb303.jar

    Com as versões 6.13 e posteriores do Amazon EMR, o jar libfb303 é automaticamente vinculado ao diretório auxlib do Hive.

  • Criar uma tabela

    • Tabela não particionada: as tabelas externas no Hive podem ser criadas ao ser fornecido o manipulador de armazenamento da seguinte forma:

      CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
    • Tabela particionada: as tabelas externas particionadas no Hive podem ser criadas da seguinte forma:

      CREATE EXTERNAL TABLE x (i int) PARTITIONED BY (j int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
    nota

    O formato de STORED AS arquivo do não ORC/AVRO/PARQUET é suportado no Hive 3. A opção padrão e única é Parquet.

  • Descartar uma tabela: o comando DROP TABLE é usado para descartar tabelas, como no exemplo a seguir:

    DROP TABLE [IF EXISTS] table_name [PURGE];
  • Ler uma tabela: as instruções SELECT podem ser usadas para ler tabelas do Iceberg no Hive, como no exemplo a seguir. Os mecanismos de execução compatíveis são MR e Tez.

    SELECT * FROM table_name

    Para obter informações sobre a sintaxe de seleção do Hive, consulte LanguageManual Selecionar. Para obter informações sobre instruções selecionadas com tabelas do Iceberg no Hive, consulte Selecionar Apache Iceberg.

  • Inserir em uma tabela: a instrução INSERT INTO do HiveQL funciona em tabelas do Iceberg compatíveis somente com o mecanismo de execução do Map Reduce. Os usuários do Amazon EMR não precisam definir explicitamente o mecanismo de execução porque o Hive no Amazon EMR seleciona o mecanismo para tabelas do Iceberg no runtime.

    • Inserção de tabela única: exemplo:

      INSERT INTO table_name VALUES ('a', 1); INSERT INTO table_name SELECT...;
    • Inserção de várias tabelas: a inserção de várias tabelas não atômicas em instruções é compatível. Exemplo: .

      FROM source INSERT INTO table_1 SELECT a, b INSERT INTO table_2 SELECT c,d;

A partir do Amazon EMR 7.3.0, o Hive with Iceberg oferece suporte ao AWS Glue Data Catalog como metastore. Para usar o AWS Glue Data Catalog como metastore, defina a seguinte propriedade.

SET iceberg.catalog.<catalog_name>.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog;

Opcionalmente, você também pode definir a propriedade a seguir.

SET iceberg.catalog.<catalog_name>.type=glue;

Você pode então criar uma tabela usando o exemplo a seguir.

CREATE EXTERNAL TABLE table_name (col1 type1, col2 type2,..) ROW FORMAT SERDE 'org.apache.iceberg.mr.hive.HiveIcebergSerDe' STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler' location '<location>' TBLPROPERTIES ('table_type'='iceberg', 'iceberg.catalog'='<catalog_name>');

Considerações sobre o uso do Iceberg com o Hive

  • O Iceberg é compatível com os seguintes tipos de consulta:

    • Create table

    • Drop table

    • Inserir na tabela

    • Ler a tabela

  • Somente o mecanismo de execução MR (MapReduce) é suportado para operações de DML (linguagem de manipulação de dados), e o MR está obsoleto no Hive 3.1.3.

  • AWS Atualmente, o Glue Data Catalog não é compatível com o Iceberg with Hive.

  • O tratamento de erros não é suficientemente robusto. Em casos de configuração incorreta, as inserções nas consultas podem ser concluídas com êxito. No entanto, a falha na atualização dos metadados pode resultar em perda de dados.

  • A integração com o Iceberg Glue não funciona com o catálogo de armazenamento gerenciado do Redshift.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.