在hadoop作业中找不到类

xienkqul  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(329)

我有一个map reduce作业,它从documentdb获取输入。我在源代码的lib目录下添加了jar文件,在运行作业时还使用了-libjars。但是对于jar文件中的一个类,我仍然得到了class not found错误。这是我的驱动程序的一部分

public class MapReduceDriver extends Configured implements Tool  {

public static void main(String[] args) throws Exception {

    int res = ToolRunner.run(new Configuration(), new MapReduceDriver(), args);
    System.exit(res);

}

@Override
public int run(String[] args) throws Exception {

    Configuration conf =  this.getConf();
    ....

在使用-libjars时,我曾经将所需的jar文件放在本地驱动程序上,也曾经放在hdfs上,但两者都不起作用。我怎样才能确保-libjars有效?
p、 我使用的是2节点hdinsight集群(在microsoftazure中运行)。
这是我收到的错误信息

Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1961)
    at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:726)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
Caused by: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1867)
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1959)
    ... 8 more
du7egjpx

du7egjpx1#

hdinsight使用的是不支持libjars的tempton,所以不能使用tempton文档
另外,我假设您正在使用powershell脚本构建一个自定义hdinsight集群。您可以将所有具有依赖关系的jar复制到hadoop\u home+'\share\hadoop\common\lib这将是hadoop lib文件夹。
或者您可以直接使用随更改包含依赖项jar的路径而发布的powershell脚本(将jar添加到azure blob中,然后只替换路径)powershell脚本

iqxoj9l9

iqxoj9l92#

我假设您指的是documentdb hadoop连接器jar,可以在这里找到:https://github.com/azure/azure-documentdb-hadoop
jar不包含依赖项。您可以让maven为您检索依赖项,也可以自己手动下载并包含在构建路径中。
以下是依赖项:
azure documentdb java sdk
openx技术jsonserde

相关问题