我是Hadoop的新手。现在我正在尝试在eclipse中执行一个应用程序,我想在其中使用HDFS中存在的数据。如果我们想用Java连接到数据库,我们有JDBC连接。像这样,我需要做什么才能直接连接到HDFS?
答案 0 :(得分:3)
在Hadoop中,首先,您必须确保Hadoop已启动并运行。 Apache Hadoop提供Java类 - FileSystem,用于从Java应用程序访问HDFS中的文件。下面是一个例子,我正在使用FileSystem和IOUtils访问/books/pg5000.txt。
import java.io.InputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class FileSystemCat {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/core-site.xml"));
conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/hdfs-site.xml"));
String uri = "/books/pg5000.txt";
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);
}
}
}
答案 1 :(得分:1)
另一种将HDFS文件作为记录(行)访问的替代解决方案,就像任何其他数据库一样。 您可以使用Hadoop配置Hive并启动HiveServer2,然后在任何应用程序中使用Thrift API来访问驻留在HDFS中的数据作为表。
参考链接: https://cwiki.apache.org/confluence/display/Hive/HiveClient
此外,几个流行的Hadoop分销商(Cloudera,Microsoft HDInsight,Hortonworks)也提供HIVE ODBC驱动程序。