我有一个在本地机器上成功运行的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集群上的什么位置?
Configuration hBaseConf = HBaseConfiguration.create();
hBaseConf.set(TableInputFormat.INPUT_TABLE, "MyTable");
JavaRDD<String> myStrings = sparkContext.newAPIHadoopRDD(
hBaseConf, TableInputFormat.class,ImmutableBytesWritable.class, Result.class).keys().map(key -> {
String from = Bytes.toString(key.get());
return from;
});
.
.
.
1条答案
按热度按时间h7wcgrx31#
我可以通过hbase classpath命令在emrshell上找到jar。然后我将hbase路径添加到jars,并使用--jars标志添加到spark submit。