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 类路径的主要内容,如果未能解决你的问题,请参考以下文章

spark SQL和hive到底啥关系

Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive

Spark SQL on HIVE

Spark SQL(十):Hive On Spark

Hive on Spark

spark sql怎么去获取hive 表一定日期范围内的数据