我是hadoop新手。现在,我正在尝试在eclipse中创建一个应用程序,其中我希望使用hdfs中的数据。如果我们想用java连接到数据库,我们有jdbc连接。这样,我需要做什么才能直接连接到hdfs?
fbcarpbf1#
在hadoop中,首先,您必须确保hadoop已经启动并运行。ApacheHadoop提供了java类文件系统来从java应用程序访问hdfs中的文件。下面是一个示例,我使用文件系统和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); } } }
yuvru6vn2#
另一个替代解决方案是像其他数据库一样以记录(行)的形式访问hdfs文件。您可以使用hadoop配置hive并启动hiveserver2,然后在任何应用程序中使用thrift api以表的形式访问hdfs中的数据。参考链接:https://cwiki.apache.org/confluence/display/hive/hiveclient另外,一些流行的hadoop发行商(cloudera、microsoftwidinsight、hortonworks)也提供了hiveodbc驱动程序。
2条答案
按热度按时间fbcarpbf1#
在hadoop中,首先,您必须确保hadoop已经启动并运行。ApacheHadoop提供了java类文件系统来从java应用程序访问hdfs中的文件。下面是一个示例,我使用文件系统和ioutils访问/books/pg5000.txt。
yuvru6vn2#
另一个替代解决方案是像其他数据库一样以记录(行)的形式访问hdfs文件。您可以使用hadoop配置hive并启动hiveserver2,然后在任何应用程序中使用thrift api以表的形式访问hdfs中的数据。
参考链接:https://cwiki.apache.org/confluence/display/hive/hiveclient
另外,一些流行的hadoop发行商(cloudera、microsoftwidinsight、hortonworks)也提供了hiveodbc驱动程序。