2015-05-08 32 views
4

我是Hadoop的新手。现在我正在尝试在eclipse中执行一个应用程序,在该应用程序中我想使用HDFS中的数据。如果我们想用Java连接到数据库,我们有JDBC连接。像那样,我需要做什么才能直接连接到HDFS?将Hadoop中的文件导入Web应用程序

回答

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

为什么我们需要提供核心站点和hdfs站点路径? – MChirukuri

+1

我正在告诉系统hadoop的安装位置,所以我指定了JDBC连接中的路径,您需要给出您尝试连接的系统的IP /端口。希望这能回答你的问题。 – Nidhi

+1

我明白了。谢谢 – MChirukuri

1

与另一个数据库一样,以HDFS文件作为记录(行)访问的另一种替代解决方案。 您可以使用Hadoop配置Hive并启动HiveServer2,然后在任何应用程序中使用Thrift API以表格的形式访问HDFS中的数据。

参考链接: https://cwiki.apache.org/confluence/display/Hive/HiveClient

而且HIVE ODBC驱动程序可从几个流行的Hadoop分销商(Cloudera的,微软HDInsight,Hortonworks)也是如此。

相关问题