在emr集群上提交spark作业时,如何避免java.lang.noclassdeffounderror?

r8uurelv  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(366)

我有一个在本地机器上成功运行的spark应用程序。我使用hbase docker容器,从中将数据加载到spark应用程序。现在我已经创建了安装了spark和hbase的emr集群。buy当我试图提交jar文件时,出现以下异常:
java.lang.noclassdeffounderror:org/apache/hadoop/hbase/hbaseconfiguration
在本地运行我的应用程序时,我可以通过添加 --jars 标记到 spark-submit ,使spark成为所有hbase jar的路径。
在emr上运行时,如何克服此错误?
我是否也应该在emr中将spark重定向到hbase jar?那些jar在emr集群上的什么位置?

  1. Configuration hBaseConf = HBaseConfiguration.create();
  2. hBaseConf.set(TableInputFormat.INPUT_TABLE, "MyTable");
  3. JavaRDD<String> myStrings = sparkContext.newAPIHadoopRDD(
  4. hBaseConf, TableInputFormat.class,ImmutableBytesWritable.class, Result.class).keys().map(key -> {
  5. String from = Bytes.toString(key.get());
  6. return from;
  7. });
  8. .
  9. .
  10. .
h7wcgrx3

h7wcgrx31#

我可以通过hbase classpath命令在emrshell上找到jar。然后我将hbase路径添加到jars,并使用--jars标志添加到spark submit。

相关问题