Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de configuraciones de Hive al ejecutar trabajos de EMR sin servidor
Puede ejecutar trabajos de Hive en una aplicación con el parámetro type
establecido en HIVE
. Los trabajos deben ser compatibles con la versión de Hive compatible con la versión de lanzamiento de Amazon EMR. Por ejemplo, cuando ejecuta trabajos en una aplicación con Amazon EMR versión 6.6.0, su trabajo debe ser compatible con Apache Hive 3.1.2. Para obtener información sobre las versiones de la aplicación para cada versión, consulte Versiones lanzamiento de Amazon EMR sin servidor.
Parámetros de los trabajos de Hive
Al utilizar la API StartJobRun
para ejecutar un trabajo de Hive, debe especificar los siguientes parámetros.
Parámetros necesarios
Rol de tiempo de ejecución de los trabajos de Hive
Utilice executionRoleArn
para especificar el ARN del rol de IAM que la aplicación utiliza para ejecutar los trabajos de Hive. Este rol debe tener los siguientes permisos:
-
Lectura de los buckets de S3 u otras fuentes de datos en las que residen sus datos
-
Lectura de los prefijos o buckets de S3 donde residen el archivo de consulta de Hive y el archivo de consulta de init
-
Lectura y escritura en los buckets de S3 donde se residen el directorio de Hive Scratch y el directorio de almacén de Hive Metastore
-
Escritura en los buckets de S3 donde desee escribir el resultado final
-
Escritura en los registros en un bucket o prefijo de S3 que especifique
S3MonitoringConfiguration
-
Acceso a las claves de KMS si usa claves de KMS para cifrar los datos en el bucket de S3
-
Acceso al catálogo de datos de AWS Glue
Si su trabajo de Hive lee o escribe datos en –o desde– otras fuentes de datos, especifique los permisos adecuados en este rol de IAM. Si no proporciona estos permisos al rol de IAM, es posible que su trabajo no funcione. Para obtener más información, consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.
Parámetros del controlador de los trabajos de Hive
Utilice jobDriver
para proporcionar datos al trabajo. El parámetro del controlador de trabajo solo acepta un valor para el tipo de trabajo que desee ejecutar. Cuando se especifica hive
como tipo de trabajo, EMR sin servidor pasa una consulta de Hive al parámetro jobDriver
. Los trabajos de Hive tienen los parámetros siguientes:
-
query
: esta es la referencia en Amazon S3 al archivo de consulta de Hive que desea ejecutar. -
parameters
: estas son las propiedades de configuración adicionales de Hive que desea anular. Para anular las propiedades, páselas a este parámetro como--hiveconf
. Para anular las variables, páselas a este parámetro comoproperty=value
--hivevar
.key=value
-
initQueryFile
: este es el archivo de consulta de Hive de init. Hive ejecuta este archivo antes de la consulta y puede usarlo para inicializar tablas.
Parámetro de anulación de la configuración de Hive
Utilice configurationOverrides
para anular las propiedades de configuración a nivel de monitorización y de aplicación. Este parámetro es un objeto JSON con los dos campos siguientes:
-
monitoringConfiguration
: utilice este campo para especificar la URL de Amazon S3 (s3MonitoringConfiguration
) donde desea que el trabajo de EMR sin servidor almacene los registros de su trabajo de Hive. Asegúrese de crear este depósito con el mismo Cuenta de AWS que aloja su aplicación y en el mismo Región de AWS lugar en el que se ejecuta su trabajo. -
applicationConfiguration
: puede proporcionar un objeto de configuración en este campo para anular las configuraciones para aplicaciones predeterminadas. Puede utilizar una sintaxis abreviada para proporcionar la configuración o hacer referencia al objeto de configuración en un archivo JSON. Los objetos de configuración se componen de una clasificación, propiedades y configuraciones anidadas opcionales. Las propiedades consisten en las configuraciones que desea anular en ese archivo. Es posible especificar varias clasificaciones para varias aplicaciones en un solo objeto JSON.nota
Las clasificaciones de configuración disponibles varían en función de la versión específica de EMR sin servidor. Por ejemplo, las clasificaciones para el Log4j personalizado
spark-driver-log4j2
yspark-executor-log4j2
solo están disponibles en las versiones 6.8.0 y posteriores.
Si pasa la misma configuración en una anulación de aplicación y en los parámetros de Hive, los parámetros de Hive tendrán prioridad. La siguiente lista clasifica las configuraciones de mayor a menor prioridad.
-
Configuración que se proporciona como parte de los parámetros de Hive con
--hiveconf
.property=value
-
Configuración que se proporciona como parte de la aplicación que se anula al iniciar un trabajo.
-
Configuración que se proporciona como parte de la
runtimeConfiguration
al crear una aplicación. -
Configuraciones optimizadas que Amazon EMR asigna a la versión.
-
Configuraciones de código abierto predeterminadas para la aplicación.
Para obtener más información sobre cómo declarar las configuraciones a nivel de aplicación y anular las configuraciones durante la ejecución de un trabajo, consulte Configuración predeterminada de aplicación para EMR sin servidor.
Propiedades de los trabajos de Hive
En la siguiente tabla se enumeran las propiedades obligatorias que debe configurar al enviar un trabajo de Hive.
Opción | Descripción |
---|---|
hive.exec.scratchdir |
La ubicación de Amazon S3 en la que EMR sin servidor crea archivos temporales durante la ejecución del trabajo de Hive. |
hive.metastore.warehouse.dir |
La ubicación de Amazon S3 de las bases de datos para tablas administradas en Hive. |
La siguiente tabla enumera las propiedades opcionales de Hive y sus valores predeterminados que puede anular al enviar un trabajo de Hive.
Opción | Descripción | Valor predeterminado |
---|---|---|
fs.s3.customAWSCredentialsProvider |
El proveedor de AWS credenciales que quieres usar. | com.amazonaws.auth.default AWSCredentials ProviderChain |
fs.s3a.aws.credentials.provider |
El proveedor de AWS credenciales que desea utilizar con un sistema de archivos S3A. | com.amazonaws.auth.default AWSCredentials ProviderChain |
hive.auto.convert.join |
Opción que activa la conversión automática de las uniones comunes en mapjoins, en función del tamaño del archivo de entrada. | TRUE |
hive.auto.convert.join.noconditionaltask |
Opción que activa la optimización cuando Hive convierte una unión común en un mapjoin en función del tamaño del archivo de entrada. | TRUE |
hive.auto.convert.join.noconditionaltask.size |
Una unión se convierte directamente en un mapjoin con un tamaño inferior a este tamaño. | El valor óptimo se calcula en función de la memoria de tareas de Tez |
hive.cbo.enable |
Opción que activa las optimizaciones basadas en los costes con el marco Calcite. | TRUE |
hive.cli.tez.session.async |
Opción para iniciar una sesión de Tez en segundo plano mientras se compila la consulta de Hive. Si se establece en false , Tez AM se inicia después de compilar la consulta de Hive. |
TRUE |
hive.compute.query.using.stats |
Opción que activa a Hive para responder a determinadas consultas con estadísticas almacenadas en el metaalmacén. Para obtener estadísticas básicas, establezca hive.stats.autogather en TRUE . Para obtener una colección de consultas más avanzada, ejecute analyze
table queries . |
TRUE |
hive.default.fileformat |
El formato de archivo predeterminado para las instrucciones CREATE TABLE . Puede anular esto de forma explícita si especifica STORED AS [FORMAT] en su comando CREATE TABLE . |
TEXTFILE |
hive.driver.cores |
El número de núcleos que se necesitarán para el proceso del controlador de Hive. | 2 |
hive.driver.disk |
El tamaño del disco para el controlador de Hive. | 20 G |
hive.driver.disk.type |
El tipo de disco para el controlador de Hive. | Estándar |
hive.tez.disk.type |
El tamaño del disco para los trabajadores Tez. | Estándar |
hive.driver.memory |
La cantidad de memoria que utilizar por proceso de controlador de Hive. El maestro de aplicación de Tez y la CLI de Hive CLI comparten esta memoria a partes iguales con un 20 % de espacio libre. | 6 G |
hive.emr-serverless.launch.env.[ |
Opción para establecer la variable de entorno en todos los procesos específicos de Hive, como el controlador de Hive, Tez AM y la tarea de Tez. |
|
hive.exec.dynamic.partition |
Opciones que activan las particiones dinámicas en DML/DDL. | TRUE |
hive.exec.dynamic.partition.mode |
Opción que especifica si desea utilizar el modo estricto o el modo no estricto. En modo estricto, debe especificar al menos una partición estática en caso de que sobrescriba todas las particiones de forma accidental. En el modo no estricto, todas las particiones pueden ser dinámicas. | strict |
hive.exec.max.dynamic.partitions |
El número máximo de particiones dinámicas que Hive crea en total. | 1 000 |
hive.exec.max.dynamic.partitions.pernode |
Número máximo de particiones dinámicas que Hive crea en cada nodo mapeador y reductor. | 100 |
hive.exec.orc.split.strategy |
Se espera que sea uno de los siguientes valores: BI , ETL o HYBRID . No se trata de una configuración a nivel de usuario. BI especifica que desea dedicar menos tiempo a la generación dividida en lugar de a la ejecución de consultas. ETL especifica que desea dedicar más tiempo a la generación dividida. HYBRID especifica una selección de las estrategias anteriores en función de la heurística. |
HYBRID |
hive.exec.reducers.bytes.per.reducer |
El tamaño por reductor. El valor predeterminado es 256 MB. Si el tamaño de entrada es de 1 G, el trabajo utiliza 4 reductores. | 256000000 |
hive.exec.reducers.max |
El número máximo de reductores. | 256 |
hive.exec.stagingdir |
El nombre del directorio que almacena los archivos temporales que Hive crea dentro de las ubicaciones de las tablas y en la ubicación del directorio inicial especificada en la propiedad hive.exec.scratchdir . |
.hive-staging |
hive.fetch.task.conversion |
Se espera que sea uno de los siguientes valores: NONE , MINIMAL o MORE . Hive puede convertir consultas seleccionadas en una sola tarea FETCH . Esto minimiza la latencia. |
MORE |
hive.groupby.position.alias |
Opción que hace que Hive utilice un alias de posición de columna en las instrucciones GROUP BY . |
FALSE |
hive.input.format |
El formato de entrada predeterminado. Establézcalo en HiveInputFormat si surgen problemas con CombineHiveInputFormat . |
org.apache.hadoop.hive.ql.io.CombineHiveInputFormat |
hive.log.explain.output |
Opción que activa las explicaciones de los resultados ampliados para cualquier consulta del registro de Hive. | FALSE |
hive.log.level |
El nivel de registro de Hive. | INFO |
hive.mapred.reduce.tasks.speculative.execution |
Opción que activa el lanzamiento especulativo de los reductores. Solo se admite con Amazon EMR 6.10.x y versiones anteriores. | TRUE |
hive.max-task-containers |
El número máximo de contenedores simultáneos. La memoria del mapeador configurada se multiplica por este valor para determinar la memoria disponible que divide el uso de computación y de prioridad de tareas. | 1 000 |
hive.merge.mapfiles |
Opción que hace que los archivos pequeños se fusionen al final de un trabajo de solo mapas. | TRUE |
hive.merge.size.per.task |
El tamaño de los archivos fusionados al final del trabajo. | 256000000 |
hive.merge.tezfiles |
Opción que activa una fusión de archivos pequeños al final de un Tez DAG. | FALSE |
hive.metastore.client.factory.class |
El nombre de la clase de fábrica que produce los objetos que implementan la interfaz IMetaStoreClient . |
com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory |
hive.metastore.glue.catalogid |
Si el catálogo de datos de AWS Glue actúa como un metaalmacén pero se ejecuta en un Cuenta de AWS lugar diferente al de los trabajos, el ID del Cuenta de AWS lugar en el que se ejecutan los trabajos. | NULL |
hive.metastore.uris |
El URI de Thrift que el cliente del metaalmacén utiliza para conectarse al metaalmacén remoto. | NULL |
hive.optimize.ppd |
Opción que activa la pulsación de predicados. | TRUE |
hive.optimize.ppd.storage |
Opción que activa la pulsación de predicados en los controladores de almacenamiento. | TRUE |
hive.orderby.position.alias |
Opción que hace que Hive utilice un alias de posición de columna en las instrucciones ORDER BY . |
TRUE |
hive.prewarm.enabled |
Opción que activa el precalentamiento del contenedor para Tez. | FALSE |
hive.prewarm.numcontainers |
El número de contenedores que se deben precalentar para el té. | 10 |
hive.stats.autogather |
Opción que hace que Hive recopile estadísticas básicas automáticamente durante el comando INSERT OVERWRITE . |
TRUE |
hive.stats.fetch.column.stats |
Opción que desactiva la búsqueda de estadísticas de columnas desde el metaalmacén. La búsqueda de estadísticas de columnas puede resultar costosa cuando el número de columnas es elevado. | FALSE |
hive.stats.gather.num.threads |
El número de subprocesos que utilizan los comandos Analyze partialscan y noscan para las tablas particionadas. Esto solo se aplica a los formatos de archivo que implementan StatsProvidingRecordReader (como ORC). |
10 |
hive.strict.checks.cartesian.product |
Opciones que activan las comprobaciones de unión cartesianas estrictas. Estas comprobaciones no permiten un producto cartesiano (una unión cruzada). | FALSE |
hive.strict.checks.type.safety |
Opción que activa las comprobaciones de seguridad de tipo estricto y desactiva la comparación de bigint con tanto string como double . |
TRUE |
hive.support.quoted.identifiers |
Espera un valor de NONE o COLUMN . NONE implica que solo los caracteres alfanuméricos y de subrayado son válidos en los identificadores. COLUMN implica que los nombres de las columnas pueden contener cualquier carácter. |
COLUMN |
hive.tez.auto.reducer.parallelism |
Opción que activa la característica de paralelismo del autorreductor Tez. Hive sigue calculando los tamaños de los datos y establece cálculos de paralelismo. Tez toma muestras de los tamaños de salida de los vértices de la fuente y ajusta los cálculos en tiempo de ejecución según sea necesario. | TRUE |
hive.tez.container.size |
La cantidad de memoria que se utilizará por proceso de tarea de Tez. | 6144 |
hive.tez.cpu.vcores |
La cantidad de núcleos que se utilizarán para cada tarea de Tez. | 2 |
hive.tez.disk.size |
El tamaño del disco de cada contenedor de tareas. | 20 G |
hive.tez.input.format |
El formato de entrada para la generación de divisiones en el Tez AM. | org.apache.hadoop.hive.ql.io.HiveInputFormat |
hive.tez.min.partition.factor |
Límite inferior de reductores que Tez especifica al activar el paralelismo del autorreductor. | 0,25 |
hive.vectorized.execution.enabled |
Opción que activa el modo vectorizado de ejecución de consultas. | TRUE |
hive.vectorized.execution.reduce.enabled |
Opción que activa el modo vectorizado en el lado de reducción de ejecución de una consulta. | TRUE |
javax.jdo.option.ConnectionDriverName |
El nombre de clase de controlador para un metaalmacén de JDBC. | org.apache.derby.jdbc.EmbeddedDriver |
javax.jdo.option.ConnectionPassword |
La contraseña asociada a una base de datos de metaalmacén. | NULL |
javax.jdo.option.ConnectionURL |
La cadena para una conexión de JDBC para un metaalmacén de JDBC. | jdbc:derby:;databaseName=metastore_db;create=true |
javax.jdo.option.ConnectionUserName |
El nombre de usuario asociado a una base de datos de metaalmacén. | NULL |
mapreduce.input.fileinputformat.split.maxsize |
El tamaño máximo de una división durante la computación de división cuando el formato de entrada es org.apache.hadoop.hive.ql.io.CombineHiveInputFormat . Un valor de 0 indica que no hay ningún límite. |
0 |
tez.am.dag.cleanup.on.completion |
Opción que activa la limpieza de los datos aleatorios cuando finaliza el DAG. | TRUE |
tez.am.emr-serverless.launch.env.[ |
Opción para establecer la variable de entorno en el proceso de Tez AM. Para Tez AM, este valor anula el valor hive.emr-serverless.launch.env.[ . |
|
tez.am.log.level |
El nivel de registro raíz que EMR sin servidor pasa al maestro de aplicaciones de Tez. | INFO |
tez.am.sleep.time.before.exit.millis |
EMR sin servidor debería enviar los eventos ATS después de este período de tiempo tras la solicitud de cierre de AM. | 0 |
tez.am.speculation.enabled |
Opción que provoca el lanzamiento especulativo de tareas más lentas. Esto puede ayudar a reducir la latencia de los trabajos cuando algunas tareas se ejecutan más lentamente debido a máquinas defectuosas o lentas. Solo se admite con Amazon EMR 6.10.x y versiones anteriores. | FALSE |
tez.am.task.max.failed.attempts |
El número máximo de intentos que se pueden fallar para una tarea en particular antes de que la tarea de error. En este número no se incluyen intentos finalizados manualmente. | 3 |
tez.am.vertex.cleanup.height |
Distancia a la que, si todos los vértices dependientes están completos, Tez AM eliminará los datos aleatorios de vértices. Esta característica se desactiva cuando el valor es 0. Las versiones 6.8.0 y posteriores de Amazon EMR admiten esta característica. | 0 |
tez.client.asynchronous-stop |
Opción que hace que EMR sin servidor envíe los eventos ATS antes de finalizar el controlador Hive. | FALSE |
tez.grouping.max-size |
El límite de tamaño superior (en bytes) de una división agrupada. Este límite evita que se produzcan divisiones excesivamente grandes. | 1073741824 |
tez.grouping.min-size |
El límite de tamaño inferior (en bytes) de una división agrupada. Este límite evita que se produzcan demasiadas divisiones pequeñas. | 16777216 |
tez.runtime.io.sort.mb |
El tamaño del búfer flexible cuando Tez ordena la salida. | El valor óptimo se calcula en función de la memoria de tareas de Tez |
tez.runtime.unordered.output.buffer.size-mb |
El tamaño del búfer que se utilizará si Tez no escribe directamente en el disco. | El valor óptimo se calcula en función de la memoria de tareas de Tez |
tez.shuffle-vertex-manager.max-src-fraction |
La fracción de tareas de la fuente que deben completarse antes de que EMR sin servidor programe todas las tareas para el vértice actual (en caso de una conexión ScatterGather ). La cantidad de tareas listas para su programación en el vértice actual se escala linealmente entre min-fraction y max-fraction . Este valor predeterminado es el valor predeterminado o tez.shuffle-vertex-manager.min-src-fraction , el que sea mayor. |
0.75 |
tez.shuffle-vertex-manager.min-src-fraction |
La fracción de tareas de la fuente que deben completarse antes de que EMR sin servidor programe las tareas para el vértice actual (en caso de una conexión ScatterGather ). |
0,25 |
tez.task.emr-serverless.launch.env.[ |
Opción para establecer la variable de entorno en el proceso de tareas de Tez. Para las tareas de Tez, este valor anula el valor hive.emr-serverless.launch.env.[ . |
|
tez.task.log.level |
El nivel de registro raíz que EMR sin servidor pasa al las tareas de Tez. | INFO |
tez.yarn.ats.event.flush.timeout.millis |
El tiempo máximo que AM debe esperar para que se vacíen los eventos antes de apagarse. | 300000 |
Ejemplos de trabajos de Hive
El siguiente ejemplo de código muestra cómo ejecutar una consulta de Hive con la API StartJobRun
.
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" } }] }'
Puede encontrar ejemplos adicionales de cómo ejecutar trabajos de Hive en el repositorio de muestras sin servidor GitHub de EMR.