es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

NoSuchMethodError: org.apache.hadoop.hive.ql.exec.Utilities.copyTableJobPropertiesToConf Error de método inexistente: org.apache.hadoop.hive.ql.exec.Utilities.copyTableJobPropertiesToConf

Cada Hola:

Hay una excepción que nunca antes había encontrado, por favor ver a continuación:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.exec.Utilities.copyTableJobPropertiesToConf(Lorg/apache/hadoop/hive/ql/plan/TableDesc;Lorg/apache/hadoop/conf/Configuration;)V
    at org.apache.spark.sql.hive.HadoopTableReader$.initializeLocalJobConfFunc(TableReader.scala:399)
    at org.apache.spark.sql.hive.HadoopTableReader.$anonfun$createOldHadoopRDD$1(TableReader.scala:314)
    at org.apache.spark.sql.hive.HadoopTableReader.$anonfun$createOldHadoopRDD$1$adapted(TableReader.scala:314)
    at org.apache.spark.rdd.HadoopRDD.$anonfun$getJobConf$8(HadoopRDD.scala:181)
    at org.apache.spark.rdd.HadoopRDD.$anonfun$getJobConf$8$adapted(HadoopRDD.scala:181)

El código es el siguiente:

import org.apache.spark.sql.SparkSession

object test {
    def main(args:Array[String]): Unit = {
        System.setProperty("HADOOP<em>USER</em>NAME", "nuochengze")
        val spark: SparkSession = SparkSession.builder()
                .appName("Test")
                .master("local[*]")
                .config("hadoop.home.dir", "hdfs://pc001:8082/user/hive/warehouse")
                .enableHiveSupport()
                .getOrCreate()
        spark.sql("use test")
        spark.sql(
            """
              |select * from emp
              |""".stripMargin).show()

        spark.close()
    }
}

Me encontré con un problema cuando utilizaba Spark para operar Hive:

Puedo realizar operaciones de DDL a través de spark.sql(…). Pero cuando intento realizar operaciones de DML, como select, se produce la excepción anterior. Sé que es un problema con el bloqueo de este método. Sin embargo, después de buscar en Internet, no encontré blogs relacionados que expliquen cómo solucionar este problema si falta este método.

¿Has encontrado esto antes? Si es así, ¿puedo pedir ayuda?

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución para Exception in thread “main” java.lang.NoSuchMethodError

    El mensaje de error “Exception in thread “main” java.lang.NoSuchMethodError” indica que el código no puede encontrar un método particular en la clase especificada.

    En el código proporcionado, el error proviene de la clase HadoopTableReader en el paquete org.apache.spark.sql.hive. El método que está causando el error es copyTableJobPropertiesToConf y no se encuentra en la clase.

    Este error puede ocurrir si hay un problema en el classpath o si hay una incompatibilidad de versiones entre las bibliotecas que se están utilizando.

    Para resolver este error, puedes probar los siguientes pasos:

    1. Verifica las versiones de las bibliotecas que se están utilizando. Asegúrate de que las versiones sean compatibles entre sí.
    2. Intenta agregar el archivo JAR que contiene el método faltante al classpath.

    3. También puedes intentar actualizar/reducir la versión de la biblioteca que está causando el problema.

    4. Intenta usar una versión diferente de Spark o Hive.

    5. Asegúrate de reiniciar tu aplicación después de realizar cualquier cambio en el classpath o en las dependencias.

    Si ninguna de estas soluciones funciona, puedes intentar publicar tu problema en foros o comunicarte con la comunidad de Apache para obtener ayuda.

    ¡Buena suerte!

Comments are closed.