本文主要是介绍MapReduce处理CSV格式文件的的一个实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们从网上下载一个cvs格式的数据文件:
http://earthquake.usgs.gov/research/data/pager/EXPO_CAT_2007_12.csv
cvs是以逗号进行列分割的数据文件。
使用opencvs可以很方便的处理cvs格式的数据。
opencvs可以从sourceforge上下载。
opencvs可以把一个string以逗号进行分割成一个string数组
只扩展 Hadoop 的 Mapper 类。然后我可以使用泛型来为传出键和值指定显式类。类型子句也指定了传入键和值,这对于读取文件分别是字节数和文本行数。
EarthQuakesPerDateMapper 类扩展了 Hadoop 的 Mapper 对象。它显式地将其输出键指定为一个 Text 对象,将其值指定为一个 IntWritable,这是一个 Hadoop 特定类,实质上是一个整数。还要注意,class 子句的前两个类型是 LongWritable 和 Text,分别是字节数和文本行数。
由于类定义中的类型子句,我将传入 map 方法的参数类型设置为在 context.write 子句内带有该方法的输出。如果我想指定其他内容,将会出现一个编译器问题,或 Hadoop 将输出一个错误消息,描述类型不匹配的消息。
一个mapper的实现:
public class EarthQuakesPerDateMapper extends
Mapper<LongWritable, Text, Text, IntWritable> {
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
这篇关于MapReduce处理CSV格式文件的的一个实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!