本学期选修了《大数据系统与大规模数据分析》,本博文介绍第一次作业的内容和相关情况,但是最终得分并不高,所以代码仅供参考吧。
一、作业内容
比较有意思的是,这次作业中,中间处理部分是根据学号的后六位有六个不同的小组,分别做不同的中间处理内容。如下:
我是两个数据表的Hash join。
二、操作介绍
1.从HDFS中读文件
HDFS中的文件都是格式规整的文件格式,每一行是一个关系型记录,如下:
老师在作业中也给出了一个HDFS中读取文件的demo,如下:
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
/**
*complie HDFSTest.java
*
* javac HDFSTest.java
*
*execute HDFSTest.java
*
* java HDFSTest
*
*/
public class HDFSTest {
public static void main(String[] args) throws IOException, URISyntaxException{
String file= "hdfs://localhost:9000/hw1/README.txt";
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(file), conf);
Path path = new Path(file);
FSDataInputStream in_stream = fs.open(path);
BufferedReader in = new BufferedReader(new InputStreamReader(in_stream));
String s;
while ((s=in.readLine())!=null) {
System.out.println(s);
}
in.close();
fs.close();
}
}
2.将输出写入到HBase
老师在作业中也给出了HBase创建表和放入内容的demo,如下:
/*
* Make sure that the classpath contains all the hbase libraries
*
* Compile:
* javac HBaseTest.java
*
* Run:
* java HBaseTest
*/
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.Mast