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
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
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órioauxlib
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órioauxlib
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.