Se necesita mucho tiempo para que Spark SQL acceda a las tablas particionadas de Hive antes del inicio de Job
Síntoma
Cuando se utiliza Spark SQL para acceder a tablas particionadas de Hive almacenadas en OBS, la velocidad de acceso es lenta y se invoca a un gran número de API de consulta de OBS.
Ejemplo de SQL:
select a,b,c from test where b=xxx
Localización de fallas
De acuerdo con la configuración, la tarea debe analizar solo la partición cuya b sea xxx. Sin embargo, los registros de tareas muestran que la tarea analiza todas las particiones y luego calcula los datos cuya b es xxx. Como resultado, el cálculo de la tarea es lento. Además, se envía un gran número de solicitudes OBS porque todos los archivos necesitan ser analizados.
De forma predeterminada, la optimización del plan de ejecución basada en estadísticas de partición está habilitada en MRS, lo que equivale a la ejecución automática de Analyze Table. (El método de configuración predeterminado es establecer spark.sql.statistics.fallBackToHdfs en true. Puede establecer este parámetro en false.) Después de activar esta función, las estadísticas de partición de tabla se analizan durante la ejecución SQL y se utilizan como estimación de costos en el plan de ejecución. Por ejemplo, las pequeñas tablas identificadas durante la evaluación de costes se difunden a cada nodo en la memoria para operaciones de unión, reduciendo significativamente el tiempo de mezclado. Esta función optimiza enormemente el rendimiento en escenarios de unión, pero aumenta el número de invocaciones de OBS.
Procedimiento
Establezca el siguiente parámetro en Spark SQL y, a continuación, ejecute la sentencia SQL:
set spark.sql.statistics.fallBackToHdfs=false;
Alternativamente, ejecute el comando --conf para establecer este parámetro en false antes del inicio.
--conf spark.sql.statistics.fallBackToHdfs=false
Desarrollo de servicios de big data Preguntas frecuentes
- ¿Puede MRS ejecutar múltiples tareas de Flume a la vez?
- ¿Cómo cambio los registros de FlumeClient a los registros estándar?
- ¿Dónde se almacenan los archivos JAR y las variables de entorno de Hadoop?
- ¿Qué algoritmos de compresión admite HBase?
- ¿Puede MRS escribir datos en HBase a través de la tabla externa de HBase de Hive?
- ¿Cómo veo los registros de HBase?
- ¿Cómo configuro el TTL para una tabla HBase?
- ¿Cómo me conecto a HBase de MRS a través de HappyBase?
- ¿Cómo cambio el número de réplicas HDFS?
- ¿Cómo modifico la clase de conmutación HDFS activo y en espera?
- ¿Cuál es el tipo de número recomendado de DynamoDB en las tablas Hive?
- ¿Se puede interconectar el controlador Hive con DBCP2?
- ¿Cómo puedo ver la tabla Hive creada por otro usuario?
- ¿Dónde puedo descargar el paquete de dependencias (com.huawei.gaussc10) en el proyecto de ejemplo de Hive?
- ¿Puedo exportar el resultado de la consulta de datos de Hive?
- ¿Cómo lo hago si ocurre un error cuando Hive ejecuta el comando beeline -e para ejecutar varias sentencias?
- ¿Cómo lo hago si un trabajo "hivesql/hivescript" no se envía después de agregar Hive?
- ¿Qué pasa si un archivo de Excel descargado en Hue no se puede abrir?
- ¿Cómo lo hago si las sesiones no se liberan después de que Hue se conecta a HiveServer y se muestra el mensaje de error "ver max user connections"?
- ¿Cómo se restablecen los datos de Kafka?
- ¿Cómo obtengo la versión de cliente de MRS Kafka?
- ¿Qué protocolos de acceso son compatibles con Kafka?
- ¿Cómo lo hago si se muestra un mensaje de error "Not Authorized to access group xxx" cuando se consume un Kafka topic?
- ¿Qué algoritmos de compresión soporta Kudu?
- ¿Cómo puedo ver los registros de Kudu?
- ¿Cómo manejo las excepciones del servicio Kudu generadas durante la creación de clústeres?
- ¿Cuáles son las diferencias entre la construcción de proyectos de ejemplo y el desarrollo de aplicaciones? ¿Es compatible el código Python?
- ¿OpenTSDB soporta las API de Python?
- ¿Cómo configuro otras fuentes de datos en Presto?
- ¿Cómo actualizo el certificado Ranger?
- ¿Cómo me conecto a Spark Shell desde MRS?
- ¿Cómo me conecto a Spark Beeline desde MRS?
- ¿Dónde se almacenan los registros de ejecución de los trabajos de Spark?
- ¿Cómo especifico una ruta de acceso de registro al enviar una tarea en un clúster MRS Storm?
- ¿Cómo puedo comprobar si la configuración ResourceManager de Yarn es correcta?
- ¿Cómo modifico el parámetro allow_drop_detached de ClickHouse?
- ¿Cómo lo hago si se informa de una alarma que indica memoria insuficiente durante la ejecución de la tarea de Spark?
- ¿Cómo agrego una política de eliminación periódica para evitar registros de tabla de sistema ClickHouse de gran tamaño?
- ¿Cómo obtengo un archivo Spark JAR?
- ¿Por qué se genera una alarma cuando el proceso NameNode no se reinicia después de modificar el archivo hdfs-site.xml?
- Se necesita mucho tiempo para que Spark SQL acceda a las tablas particionadas de Hive antes del inicio de Job
- ¿Qué debo hacer si spark.yarn.executor.memoryOverhead no tiene efecto?
- ¿Cómo cambio la zona horaria del servicio ClickHouse?
- ¿Qué debo hacer si falla la conexión con el servidor ClickHouse? Código de error: 516
Comentarios
¿Le pareció útil esta página?
Deje algún comentariomore