Spark SQL Hive Datanucleus jar 类路径
Posted
技术标签:
【中文标题】Spark SQL Hive Datanucleus jar 类路径【英文标题】:Spark SQL Hive Datanucleus jar Classpath 【发布时间】:2015-08-15 20:10:19 【问题描述】:我有一个应用程序,一个基于 Netty 构建的嵌入 spark sql 的 REST 服务器,以及用于执行分析查询的 hivecontext。 运行服务时,IntelliJ 上一切正常。但是我构建了一个包含整个东西的超级罐子。并且不能让它运行,因为 Hive 不能实例化它的 MetaStoreclient。 挖掘后,hive 似乎无法解决数据核依赖关系。 我以
身份运行我的应用程序java -jar app.jar
我尝试使用 java -cp 添加 Datanucleus jar ......但没有成功。 Spark 文档建议使用 --jars 标志运行它,但仍然没有运气。因为我想我在这里没有使用 spark-submit。
非常感谢任何帮助。 谢谢。
编辑:要回答下面的问题,是的,我现在以本地模式启动 Spark,作为 master = local[*]。 $SPARK_HOME/conf/ 中有一个 hive-site.xml。 在 IntelliJ 中运行时,它工作正常,hive 在项目目录上创建一个本地元存储,将其日志吐出到 derby.log。在实例化 SparkContext 和 HiveContext 的阴影 jar 中启动 Web 服务器时似乎会发生此问题。
【问题讨论】:
您是否将 Spark 上下文作为独立应用程序(无集群)启动?您的应用中是否有 hive-site.xml 文件? 【参考方案1】:所以我设法解决了这个问题。因为我使用的是 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 中添加了这些行以及匹配的版本,它工作正常。
【讨论】:
以上是关于Spark SQL Hive Datanucleus jar 类路径的主要内容,如果未能解决你的问题,请参考以下文章