Spark SQL Hive Datanucleus jar 类路径

Spark SQL Hive Datanucleus jar Classpath

我有一个应用程序,一个基于嵌入 spark sql 的 Netty 构建的 REST 服务器,以及用于执行分析查询的 hivecontext。 运行 连接服务时,IntelliJ 一切正常。但是我构建了一个包含所有内容的超级罐子。并且无法获取到 运行,因为 Hive 无法实例化其 MetaStoreclient。 挖掘后似乎配置单元无法解决数据核依赖关系。 我 运行 我的申请是

java -jar app.jar

我曾尝试使用 java -cp 添加 Datanucleus 罐子……但没有成功。 Spark 文档建议 运行 将其与 --jars 标志结合使用,但仍然没有成功。因为我想我在这里没有使用 spark-submit。

非常感谢任何帮助。 谢谢

编辑:为了回答下面的问题,是的,我现在以本地模式启动 Spark 作为 master = local[*]。 $SPARK_HOME/conf/ 中有一个配置单元-site.xml。 当 运行 在 IntelliJ 中它工作正常时,hive 在项目目录上创建一个本地 metastore,将其日志吐到 derby.log。在实例化 SparkContext 和 HiveContext 的阴影 jar 中启动 Web 服务器时,似乎会发生此问题。

所以我设法解决了这个问题。因为我使用的是maven shade插件,所以我需要将datanucleus jar添加到类路径中

  <transformer  implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    <manifestEntries>
      <Main-Class>com.sparkserver.SparkServer</Main-Class>
      <Class-Path>..libs/mysql-connector-java-5.1.36.jar ../libs/datanucleus-core-3.2.10.jar ../libs/datanucleus-api-jdo-3.2.6.jar ../libs/datanucleus-rdbms-3.2.9.jar ../libs/bonecp-0.8.0.RELEASE.jar
     </Class-Path>
    </manifestEntries>
  </transformer>

由于使用 -jar 删除了通常的类路径,我在 $SPARK_HOME/libs 中添加了这些行和匹配的版本,并且工作正常。