从 hadoop URL 读取数据
1. 自定义编写URLCat方法:
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class URLCat{
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) throws Exception {
InputStream in = null;
try {
in = new URL(args[0]).openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
} finally {
IOUtils.closeStream(in);
}
}
}
代码说明:这里采用的方法是通过FsUrlStreamHandlerFactory实例调用java.net.URL的setURLStreamHandlerFactory方法。每个java虚拟机只能调用一次这个方法,因此通常在静态中调用。
准备工作:
1.开启集群,我用的是一个master,两个slave的分布式
2.我的用户是hdfs,因此在/home/hdfs目录下创建文件夹fileTest
3.进入到文件夹fileTest,创建两个txt文本,名字自定义
4.将文件中写入字符串,echo “Hello World”>file1.txt,echo “Hello hadoop”>file2.txt
5.在HDFS上创建输入文件夹,如果不指定路径则自动创建到根目录hadoop fs -mkdir -p input
6.上传本地文件到集群input目录下
hadoop fs -put ~/fileTest/file*.txt input
运行步骤:
1. 用HelloWorld测试环境运行(保证环境可用)
2. 将
export CLASSPATH=.:/var/local/hadoop/hadoop-2.6.0/share/hadoop/common/lib/*:/var/local/hadoop/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar
添加到/etc/profile中,source /etc/profile 使其生效
common包负责java的编译运行,因此找到common包是主要目的
3. 运行命令:
hadoop jar jar文件名 类名 路径名
#编译java文件,生成class文件
javac URLCat.java
jar cvf URLCat.jar URLCat.class
hadoop jar 类名.jar 类名 hdfs://192.168.253.131:9000/文件路径
版权声明:本文为CSDN_FTD原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。