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 StartJobRun
APIpara executar uma tarefa do Hive, você deve especificar os seguintes parâmetros.
Parâmetros necessários
Função de tempo de execução do trabalho do Hive
Use executionRoleArn
para 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 jobDriver
para 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
. Para substituir variáveis, passe-as para esse parâmetro comoproperty=value
--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 configurationOverrides
para 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.0spark-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.[ |
Opção para definir a variável de 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. BI especifica que você deseja gastar menos tempo na geração dividida do que na execução da consulta. ETL especifica que você deseja passar mais tempo na geração dividida. HYBRID especifica 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 . NONE implica que somente caracteres alfanuméricos e sublinhados sejam válidos nos identificadores. COLUMN implica 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.[ |
Opção para definir a variável de ambiente no processo Tez AM. Para Tez AM, esse valor substitui o valor. hive.emr-serverless.launch.env.[ |
|
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.[ |
Opção para definir a variável de ambiente no processo da tarefa Tez. Para tarefas Tez, esse valor substitui o valor. hive.emr-serverless.launch.env.[ |
|
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-arnjob-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