【发布时间】:2018-09-28 10:48:04
【问题描述】:
我是 Cloudera 快速入门的新手,如果我的解释不是很清楚,我很抱歉。无论如何,我正在用 Java 编写一个从 Hdfs 读取文件的代码。我构建了一个 Maven-Project 并在 pom.xml 中设置了所有依赖项,但是当我尝试从 shell (java -jar jnameofthefile.jar) 启动 jar 时,我收到了这个错误: 线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/hadoop/fs/FSDataInputStrea
这是我的 Java 代码:
package com.hdfs_java_api;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import java.io.InputStream;
import java.io.IOException;
import java.net.URI;
public class HadoopFileSystemCat {
public static void main(String [] args) throws IOException
{
String uri = "hdfs://quickstart.cloudera:8020/user/hive/warehouse/Orders.csv";
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
InputStream in = null;
try {
in = fs.open(new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
}finally{
IOUtils.closeStream(in);
}
}
}
这是我的 pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>cards</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hdfs_java_api</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-
8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0-cdh5.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-common</artifactId>
<version>2.6.0-cdh5.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<version>2.6.0-cdh5.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.6.0-cdh5.13.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>cloudera</id>
<name>cloudera</name>
<url>https://repository.cloudera.com/artifactory/cloudera-
repos/</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.hdfs_java_api.HadoopFileSystemCat</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
正如我所说,我是菜鸟,所以请耐心等待,并尽量做到清楚,提前谢谢!
【问题讨论】:
标签: java hdfs cloudera-quickstart-vm