java - Java 中的 Spark Hive Context hql 问题 - 在 yarn 中运行 spark 作业时

标签 java hive apache-spark hadoop-yarn

我们有一个在 yarn 中使用 spark-submit 运行的 spark 应用程序。当运行一个

java 中的 sparkHiveContext.hql("show databases")

得到以下异常

ClassLoaderResolver for class "" gave error on creation : {1} org.datanucleus.exceptions.NucleusUserException: ClassLoaderResolver for class "" gave error on creation : {1}
at org.datanucleus.NucleusContext.getClassLoaderResolver(NucleusContext.java:1087)
at org.datanucleus.PersistenceConfiguration.validatePropertyValue(PersistenceConfiguration.java:797)
at org.datanucleus.PersistenceConfiguration.setProperty(PersistenceConfiguration.java:714)
at org.datanucleus.PersistenceConfiguration.setPersistenceProperties(PersistenceConfiguration.java:693)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:273)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:247)
at org.datanucleus.NucleusContext.<init>(NucleusContext.java:225)

我得到堆栈跟踪

Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1412)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:62)
at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:72)
at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2453)
at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2465)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:340)
... 27 more caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1410)
... 32 more Caused by: javax.jdo.JDOFatalInternalException: Unexpected exception caught.

但是..在 spark-sql 控制台中运行我的查询是可行的。这有什么问题。

最佳答案

这样做的原因是,如果您将 spark 应用程序打包为 fat/uber jar,则 datanucleus 库不喜欢它,因为每个 datanucleus 依赖 jar 中都有一个公共(public) pom.xml,它会被一个覆盖。您需要将它们分别添加到类路径中。

关于java - Java 中的 Spark Hive Context hql 问题 - 在 yarn 中运行 spark 作业时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326311/

相关文章:

java - 将参数从 PrimeFaces 数据表传递到托管 bean

java - 使用密码时 SSL 库失败

linux - 如何针对目录中的多个文件执行 Pig 脚本

java - SparkApp 无法加载 Aws Java Sdk 定义

scala - 传递具有任何案例类返回类型的函数作为参数

java - 匹配除 1 和 0 之外的数字

mysql - 创建 Hive 表 - 如何从 CSV 源中导出列名?

hadoop - 如何插入配置单元表,按从临时表中读取的日期划分?

apache-spark - 为什么Spark将Map阶段输出保存到本地磁盘?

java - 在 Java 中使用接口(interface)对类进行分组