【问题标题】:org.apache.hadoop.hive.ql.metadata.Hive.loadDynamicPartitions exception when writing a hive partitioned table from spark(2.11) dataframe从 spark(2.11) 数据帧写入 hive 分区表时出现 org.apache.hadoop.hive.ql.metadata.Hive.loadDynamicPartitions 异常
【发布时间】:2017-09-08 20:54:25
【问题描述】:

我有这种奇怪的行为,我的用例是使用

将 Spark 数据帧写入配置单元分区表
sqlContext.sql("INSERT OVERWRITE TABLE <table> PARTITION (<partition column) SELECT * FROM <temp table from dataframe>") 

奇怪的是,这在使用主机 A 的 pyspark shell 时有效,但是相同的代码,连接到同一个集群,使用同一个配置单元表在 jupyter 笔记本中不起作用,它返回:

java.lang.NoSuchMethodException: org.apache.hadoop.hive.ql.metadata.Hive.loadDynamicPartitions 

在我看来,异常是在启动 pyspark shell 的主机和启动 jupyter 的主机之间存在一些 jar 不匹配,我的问题是,我如何确定在 pyspark shell 中使用了哪个版本的相应 jar ,并通过代码在jupyter笔记本中(我无法访问jupyter服务器)?如果 pyspark shell 和 jupyter 都连接到同一个集群,为什么要使用 2 个不同的版本?

更新:经过一番研究,我发现 jupyter 使用“Livy”,而 Livy 主机使用 hive-exec-2.0.1.jar,我们使用 pyspark shell 的主机使用 hive-exec-1.2 .1000.2.5.3.58-3.jar,所以我从 maven 存储库下载了两个 jar 并对其进行了反编译,我发现两者都存在 loadDynamicPartitions 方法,方法签名(参数)不同,在 livy 版本中 boolean holdDDLTime 参数丢失。

【问题讨论】:

    标签: hadoop apache-spark hive pyspark


    【解决方案1】:

    我有类似的问题尝试从 cloudera 获取 maven 依赖项

     <dependencies>
        <!-- Scala and Spark dependencies -->
    
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>1.6.0-cdh5.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>1.6.0-cdh5.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.10</artifactId>
            <version>1.6.0-cdh5.9.2</version>
        </dependency>
         <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>1.1.0-cdh5.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_2.10</artifactId>
            <version>3.0.0-SNAP4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.10</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.databricks</groupId>
            <artifactId>spark-csv_2.10</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.databricks</groupId>
            <artifactId>spark-xml_2.10</artifactId>
            <version>0.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk</artifactId>
            <version>1.0.12</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>1.11.172</version>
        </dependency>
        <dependency>
            <groupId>com.github.scopt</groupId>
            <artifactId>scopt_2.10</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>maven-hadoop</id>
            <name>Hadoop Releases</name>
            <url>https://repository.cloudera.com/content/repositories/releases/</url>
        </repository>
        <repository>
            <id>cloudera-repos</id>
            <name>Cloudera Repos</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
    </repositories>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 2018-11-21
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      相关资源
      最近更新 更多