gpt4 book ai didi

java - Spark SQL Hive Datanucleus jar 类路径

转载 作者:行者123 更新时间:2023-11-30 08:00:26 25 4
gpt4 key购买 nike

我有一个应用程序,一个基于 Netty 构建的 REST 服务器,嵌入了 Spark sql 和 hivecontext 来执行分析查询。运行服务时,IntelliJ 上一切正常。但我构建了一个包含整个东西的 super jar 。并且无法让它运行,因为 Hive 无法实例化其 MetaStoreclient。 经过挖掘,hive 似乎无法解析 datanucleus 依赖关系。我将我的应用程序运行为

java -jar app.jar

我尝试使用 java -cp 添加 Datanucleus jars ...但没有成功。Spark 文档建议使用 --jars 标志运行它,但仍然没有运气。因为我想我在这里没有使用 Spark-submit。

非常感谢任何帮助。谢谢。

编辑:为了回答下面的问题,是的,我现在正在本地模式下启动 Spark,master = local[*]。 $SPARK_HOME/conf/中有一个 hive-site.xml。当在 IntelliJ 中运行时,它工作正常,hive 在项目目录上创建一个本地元存储,将其日志发送到 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 中添加了这些行以及匹配的版本,并且工作正常。

关于java - Spark SQL Hive Datanucleus jar 类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32028900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com