Trabalhos na 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á.

Trabalhos na Hive

Você pode executar trabalhos do Hive em um aplicativo com o type parâmetro definido como. HIVE Os trabalhos devem ser compatíveis com a versão do Hive compatível com a versão de EMR lançamento da Amazon. Por exemplo, quando você executa trabalhos em um aplicativo com a EMR versão 6.6.0 da Amazon, seu trabalho deve ser compatível com o Apache Hive 3.1.2. Para obter informações sobre as versões do aplicativo para cada versão, consulteVersões de EMR lançamento do Amazon Serverless.

Parâmetros de trabalho do Hive

Ao usar o StartJobRunAPIpara executar uma tarefa do Hive, você deve especificar os seguintes parâmetros.

Função de tempo de execução do trabalho do Hive

Use executionRoleArnpara especificar a ARN IAM função que seu aplicativo usa para executar trabalhos do Hive. Essa função deve conter as seguintes permissões:

  • Leia a partir de buckets do S3 ou de outras fontes de dados em que seus dados residem

  • Leia os buckets ou prefixos do S3 em que residem o arquivo de consulta do Hive e o arquivo de consulta inicial

  • Leia e grave nos buckets do S3 onde residem o diretório do Hive Scratch e o diretório do armazém do Hive Metastore

  • Grave nos buckets do S3 onde você pretende gravar sua saída final

  • Grave registros em um bucket ou prefixo do S3 que especifique S3MonitoringConfiguration

  • Acesso às KMS chaves se você usar KMS chaves para criptografar dados em seu bucket do S3

  • Acesso ao catálogo de dados do AWS Glue

Se sua tarefa do Hive ler ou gravar dados em ou de outras fontes de dados, especifique as permissões apropriadas nessa IAM função. Se você não fornecer essas permissões para a IAM função, seu trabalho poderá falhar. Para obter mais informações, consulte Funções de tempo de execução de trabalho para Amazon EMR Serverless.

Parâmetro do driver de trabalho do Hive

Use jobDriverpara fornecer informações para o trabalho. O parâmetro do driver de trabalho aceita somente um valor para o tipo de trabalho que você deseja executar. Quando você especifica hive como o tipo de tarefa, o EMR Serverless passa uma consulta do Hive para o parâmetro. jobDriver Os trabalhos do Hive têm os seguintes parâmetros:

  • query— Essa é a referência no Amazon S3 ao arquivo de consulta do Hive que você deseja executar.

  • parameters— Essas são as propriedades adicionais de configuração do Hive que você deseja substituir. Para substituir propriedades, passe-as para esse parâmetro como--hiveconf property=value. Para substituir variáveis, passe-as para esse parâmetro como--hivevar key=value.

  • initQueryFile— Este é o arquivo de consulta init do Hive. O Hive executa esse arquivo antes da consulta e pode usá-lo para inicializar tabelas.

Parâmetro de substituição da configuração do Hive

Use configurationOverridespara substituir as propriedades de configuração no nível de monitoramento e no nível do aplicativo. Esses parâmetros aceitam um JSON objeto com os dois campos a seguir:

  • monitoringConfiguration— Use esse campo para especificar o Amazon S3 URL (s3MonitoringConfiguration) em que você deseja que o trabalho EMR sem servidor armazene os registros do seu trabalho do Hive. Certifique-se de criar esse bucket com o mesmo Conta da AWS que hospeda seu aplicativo e no mesmo Região da AWS local em que seu trabalho está sendo executado.

  • applicationConfiguration— Você pode fornecer um objeto de configuração nesse campo para substituir as configurações padrão dos aplicativos. Você pode usar uma sintaxe abreviada para fornecer a configuração ou pode referenciar o objeto de configuração em um arquivo. JSON Os objetos de configuração consistem em uma classificação, propriedades e configurações opcionais aninhadas As propriedades consistem nas configurações que você deseja substituir neste arquivo. Você pode especificar várias classificações para vários aplicativos em um único JSON objeto.

    nota

    As classificações de configuração disponíveis variam de acordo com a versão específica do EMR Serverless. Por exemplo, classificações para Log4j personalizado spark-executor-log4j2 estão disponíveis somente nas versões 6.8.0 spark-driver-log4j2 e superiores.

Se você passar a mesma configuração em uma substituição de aplicativo e nos parâmetros do Hive, os parâmetros do Hive terão prioridade. A lista a seguir classifica as configurações da prioridade mais alta para a prioridade mais baixa.

  • Configuração que você fornece como parte dos parâmetros do Hive. --hiveconf property=value

  • A configuração que você fornece como parte do seu aplicativo é substituída quando você inicia um trabalho.

  • Configuração que você fornece como parte da sua runtimeConfiguration ao criar um aplicativo.

  • Configurações otimizadas que a Amazon EMR atribui para o lançamento.

  • Configurações padrão de código aberto para o aplicativo.

Para obter mais informações sobre como declarar configurações no nível do aplicativo e substituir configurações durante a execução do trabalho, consulte. Configuração padrão do aplicativo para EMR Serverless

Propriedades de trabalho em Hive

A tabela a seguir lista as propriedades obrigatórias que você deve configurar ao enviar uma tarefa do Hive.

Configuração Descrição
hive.exec.scratchdir O local do Amazon S3 em que o EMR Serverless cria arquivos temporários durante a execução do trabalho do Hive.
hive.metastore.warehouse.dir A localização dos bancos de dados no Amazon S3 para tabelas gerenciadas no Hive.

A tabela a seguir lista as propriedades opcionais do Hive e seus valores padrão que você pode substituir ao enviar um trabalho do Hive.

Configuração Descrição Valor padrão
fs.s3.customAWSCredentialsProvider O provedor AWS de credenciais que você deseja usar. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
fs.s3a.aws.credentials.provider O provedor de AWS credenciais que você deseja usar com um sistema de arquivos S3A. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
hive.auto.convert.join Opção que ativa a conversão automática de junções comuns em mapjoins, com base no tamanho do arquivo de entrada. TRUE
hive.auto.convert.join.noconditionaltask Opção que ativa a otimização quando o Hive converte uma junção comum em uma junção de mapa com base no tamanho do arquivo de entrada. TRUE
hive.auto.convert.join.noconditionaltask.size Uma junção é convertida diretamente em uma junção de mapa abaixo desse tamanho. O valor ideal é calculado com base na memória de tarefas Tez
hive.cbo.enable Opção que ativa otimizações baseadas em custos com a estrutura Calcite. TRUE
hive.cli.tez.session.async Opção para iniciar uma sessão Tez em segundo plano enquanto sua consulta do Hive é compilada. Quando definido comofalse, o Tez AM é iniciado após a compilação da consulta do Hive. TRUE
hive.compute.query.using.stats Opção que ativa o Hive para responder a determinadas consultas com estatísticas armazenadas na metastore. Para estatísticas básicas, hive.stats.autogather defina comoTRUE. Para uma coleção mais avançada de consultas, executeanalyze table queries. TRUE
hive.default.fileformat O formato de arquivo padrão para CREATE TABLE declarações. Você pode substituir isso explicitamente se especificar STORED AS [FORMAT] em seu CREATE TABLE comando. TEXTFILE
hive.driver.cores O número de núcleos a serem usados no processo de driver do Hive. 2
hive.driver.disk O tamanho do disco do driver do Hive. 20G
hive.driver.disk.type O tipo de disco do driver do Hive. Padrão
hive.tez.disk.type O tamanho do disco para os trabalhadores do chá. Padrão
hive.driver.memory A quantidade de memória a ser usada por processo do driver do Hive. O Hive CLI e o Tez Application Master compartilham essa memória igualmente com 20% do espaço livre. 6G
hive.emr-serverless.launch.env.[KEY] Opção para definir a variável de KEY ambiente em todos os processos específicos do Hive, como seu driver do Hive, Tez AM e tarefa Tez.
hive.exec.dynamic.partition Opções que ativam partições dinâmicas emDML/DDL. TRUE
hive.exec.dynamic.partition.mode Opção que especifica se você deseja usar o modo estrito ou o modo não estrito. No modo estrito, você deve especificar pelo menos uma partição estática no caso de sobrescrever acidentalmente todas as partições. No modo não estrito, todas as partições podem ser dinâmicas. strict
hive.exec.max.dynamic.partitions O número máximo de partições dinâmicas que o Hive cria no total. 1000
hive.exec.max.dynamic.partitions.pernode Número máximo de partições dinâmicas que o Hive cria em cada nó mapeador e redutor. 100
hive.exec.orc.split.strategy Espera um dos seguintes valores:BI,ETL, ouHYBRID. Essa não é uma configuração em nível de usuário. BIespecifica que você deseja gastar menos tempo na geração dividida do que na execução da consulta. ETLespecifica que você deseja passar mais tempo na geração dividida. HYBRIDespecifica uma escolha das estratégias acima com base na heurística. HYBRID
hive.exec.reducers.bytes.per.reducer O tamanho por redutor. O padrão é 256 MB. Se o tamanho da entrada for 1G, o trabalho usa 4 redutores. 256000000
hive.exec.reducers.max O número máximo de redutores. 256
hive.exec.stagingdir O nome do diretório que armazena os arquivos temporários que o Hive cria dentro dos locais das tabelas e no local do diretório de rascunho especificado na hive.exec.scratchdir propriedade. .hive-staging
hive.fetch.task.conversion Espera um dos seguintes valores:NONE,MINIMAL, ouMORE. O Hive pode converter consultas selecionadas em uma única FETCH tarefa. Isso minimiza a latência. MORE
hive.groupby.position.alias Opção que faz com que o Hive use um alias de posição da coluna em GROUP BY declarações. FALSE
hive.input.format O formato de entrada padrão. Defina como HiveInputFormat se você encontrar problemas comCombineHiveInputFormat. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
hive.log.explain.output Opção que ativa explicações sobre a saída estendida para qualquer consulta no seu registro do Hive. FALSE
hive.log.level O nível de registro do Hive. INFO
hive.mapred.reduce.tasks.speculative.execution Opção que ativa o lançamento especulativo para redutores. Compatível somente com o Amazon EMR 6.10.x e versões anteriores. TRUE
hive.max-task-containers O número máximo de contêineres simultâneos. A memória do mapeador configurada é multiplicada por esse valor para determinar a memória disponível que divide o uso da computação e da preempção de tarefas. 1000
hive.merge.mapfiles Opção que faz com que arquivos pequenos sejam mesclados no final de um trabalho somente de mapa. TRUE
hive.merge.size.per.task O tamanho dos arquivos mesclados no final do trabalho. 256000000
hive.merge.tezfiles Opção que ativa a mesclagem de pequenos arquivos no final de um DAG Tez. FALSE
hive.metastore.client.factory.class O nome da classe de fábrica que produz objetos que implementam a IMetaStoreClient interface. com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
hive.metastore.glue.catalogid Se o AWS Glue Data Catalog funcionar como um metastore, mas for executado em um local Conta da AWS diferente dos trabalhos, o ID do local em Conta da AWS que os trabalhos estão sendo executados. NULL
hive.metastore.uris A economia URI que o cliente do metastore usa para se conectar ao metastore remoto. NULL
hive.optimize.ppd Opção que ativa a redução do predicado. TRUE
hive.optimize.ppd.storage Opção que ativa o envio de predicados para manipuladores de armazenamento. TRUE
hive.orderby.position.alias Opção que faz com que o Hive use um alias de posição da coluna em ORDER BY declarações. TRUE
hive.prewarm.enabled Opção que ativa o pré-aquecimento do recipiente para Tez. FALSE
hive.prewarm.numcontainers O número de recipientes a serem pré-aquecidos para Tez. 10
hive.stats.autogather Opção que faz com que o Hive colete estatísticas básicas automaticamente durante o INSERT OVERWRITE comando. TRUE
hive.stats.fetch.column.stats Opção que desativa a busca de estatísticas de colunas do metastore. Uma busca de estatísticas de colunas pode ser cara quando o número de colunas é alto. FALSE
hive.stats.gather.num.threads O número de threads que os comandos partialscan and noscan analyze usam para tabelas particionadas. Isso se aplica somente aos formatos de arquivo que implementam StatsProvidingRecordReader (comoORC). 10
hive.strict.checks.cartesian.product Opções que ativam verificações estritas de junção cartesiana. Essas verificações não permitem um produto cartesiano (uma junção cruzada). FALSE
hive.strict.checks.type.safety Opção que ativa verificações de segurança de tipo estritas e desativa a comparação bigint com ambas string double e. TRUE
hive.support.quoted.identifiers Espera um valor de NONE ouCOLUMN. NONEimplica que somente caracteres alfanuméricos e sublinhados sejam válidos nos identificadores. COLUMNimplica que os nomes das colunas podem conter qualquer caractere. COLUMN
hive.tez.auto.reducer.parallelism Opção que ativa o recurso de paralelismo do redutor automático Tez. O Hive ainda estima os tamanhos dos dados e define estimativas de paralelismo. O Tez coleta amostras dos tamanhos de saída dos vértices de origem e ajusta as estimativas em tempo de execução conforme necessário. TRUE
hive.tez.container.size A quantidade de memória a ser usada por processo de tarefa Tez. 6144
hive.tez.cpu.vcores O número de núcleos a serem usados para cada tarefa do Tez. 2
hive.tez.disk.size O tamanho do disco para cada contêiner de tarefas. 20G
hive.tez.input.format O formato de entrada para geração de divisões no Tez AM. org.apache.hadoop.hive.ql.io.HiveInputFormat
hive.tez.min.partition.factor Limite inferior de redutores que Tez especifica quando você ativa o paralelismo do redutor automático. 0.25
hive.vectorized.execution.enabled Opção que ativa o modo vetorizado de execução da consulta. TRUE
hive.vectorized.execution.reduce.enabled Opção que ativa o modo vetorizado do lado reduzido da execução de uma consulta. TRUE
javax.jdo.option.ConnectionDriverName O nome da classe do driver para uma JDBC metastore. org.apache.derby.jdbc.EmbeddedDriver
javax.jdo.option.ConnectionPassword A senha associada a um banco de dados do metastore. NULL
javax.jdo.option.ConnectionURL A string de JDBC conexão para uma JDBC metastore. jdbc:derby:;databaseName=metastore_db;create=true
javax.jdo.option.ConnectionUserName O nome do usuário associado a um banco de dados do metastore. NULL
mapreduce.input.fileinputformat.split.maxsize O tamanho máximo de uma divisão durante o cálculo da divisão quando seu formato de entrada éorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat. O valor de 0 indica que não há limite. 0
tez.am.dag.cleanup.on.completion Opção que ativa a limpeza aleatória de dados quando concluída. DAG TRUE
tez.am.emr-serverless.launch.env.[KEY] Opção para definir a variável de KEY ambiente no processo Tez AM. Para Tez AM, esse valor substitui o valor. hive.emr-serverless.launch.env.[KEY]
tez.am.log.level O nível de registro raiz que o EMR Serverless passa para o mestre do aplicativo Tez. INFO
tez.am.sleep.time.before.exit.millis EMRO Serverless deve enviar ATS eventos após esse período após a solicitação de desligamento da manhã. 0
tez.am.speculation.enabled Opção que causa o lançamento especulativo de tarefas mais lentas. Isso pode ajudar a reduzir a latência do trabalho quando algumas tarefas estão sendo executadas mais lentamente devido a máquinas defeituosas ou lentas. Compatível somente com o Amazon EMR 6.10.x e versões anteriores. FALSE
tez.am.task.max.failed.attempts O número máximo de tentativas que podem falhar em uma tarefa específica antes que a tarefa falhe. Esse número não conta as tentativas encerradas manualmente. 3
tez.am.vertex.cleanup.height Uma distância na qual, se todos os vértices dependentes estiverem completos, o Tez AM excluirá os dados de embaralhamento de vértices. Esse recurso é desativado quando o valor é 0. EMRAs versões 6.8.0 e posteriores da Amazon oferecem suporte a esse recurso. 0
tez.client.asynchronous-stop Opção que faz com que o EMR Serverless envie ATS eventos antes de encerrar o driver do Hive. FALSE
tez.grouping.max-size O limite superior de tamanho (em bytes) de uma divisão agrupada. Esse limite evita divisões excessivamente grandes. 1073741824
tez.grouping.min-size O limite de tamanho inferior (em bytes) de uma divisão agrupada. Esse limite evita muitas pequenas divisões. 16777216
tez.runtime.io.sort.mb O tamanho do buffer flexível quando o Tez classifica a saída é classificado. O valor ideal é calculado com base na memória de tarefas Tez
tez.runtime.unordered.output.buffer.size-mb O tamanho do buffer a ser usado se o Tez não gravar diretamente no disco. O valor ideal é calculado com base na memória de tarefas Tez
tez.shuffle-vertex-manager.max-src-fraction A fração das tarefas de origem que devem ser concluídas antes que o EMR Serverless programe todas as tarefas para o vértice atual (no caso de uma conexão). ScatterGather O número de tarefas prontas para agendamento no vértice atual é escalonado linearmente entre e. min-fraction max-fraction Isso padroniza o valor padrão outez.shuffle-vertex-manager.min-src-fraction, o que for maior. 0.75
tez.shuffle-vertex-manager.min-src-fraction A fração das tarefas de origem que devem ser concluídas antes que o EMR Serverless agende tarefas para o vértice atual (no caso de uma conexão). ScatterGather 0.25
tez.task.emr-serverless.launch.env.[KEY] Opção para definir a variável de KEY ambiente no processo da tarefa Tez. Para tarefas Tez, esse valor substitui o valor. hive.emr-serverless.launch.env.[KEY]
tez.task.log.level O nível de registro raiz que o EMR Serverless passa para as tarefas do Tez. INFO
tez.yarn.ats.event.flush.timeout.millis A quantidade máxima de tempo que o AM deve esperar até que os eventos sejam encerrados antes de serem encerrados. 300000

Exemplos de empregos no Hive

O exemplo de código a seguir mostra como executar uma consulta do Hive com o. StartJobRun API

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'

Você pode encontrar exemplos adicionais de como executar trabalhos do Hive no repositório EMRServerless Samples. GitHub