2 qq 21194023 qq_21194023 于 2016.02.25 11:59 提问

mapreduce,java处理操作文件

A文件
1 q*a*z
2 w*s*x
B文件
1 q
1 a
1 z
2 w
2 s
2 x
利用java代码怎么把A文件转变成B文件

2个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.25 13:17

找到转换规律之后,然后就是读取A文件,
逐行读取readLine(),先用split("空格")将这一行数据进行分割,正常情况能分割成两条记录,然后再对第二条记录进行分割split("星号")
然后写入文件B中。这个需求还是很简单的。如果你熟悉文件操作的话,大概的伪代码如下:(没有开发环境,仅供参考)

 String value= fileAReader.readLine();
 while(value!=null){
    //空格分隔
        String[] current = value.split(" ");
        if(current!=null&&current.length==2){
             String first = current[0];
                 String second = current[1];
                 //对A文件的每一行的第二个元素用星号进行分割
             String[] starSplit = second.split("*");
                 for(String star :starSplit){
                     //将*号分割的数据写入文件B:first+每个星号分割的数据
                         fileBWriter.write(first+star);
                         fileBWriter.newLine();//换行
                 }
        }
}

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.25 13:18

修正一下,上述循环最后一句,循环读取下一行,需要加一句。

 value= fileAReader.readLine();
wojiushiwo945you
wojiushiwo945you 回复寂寞不孤单:的确如此,需要刷新文件。就是伪代码,考虑不太周全。更正下,flush不是关闭缓冲,而是强制将缓冲区数据刷新到文件中,便于你能立即查看到文件最新内容。
2 年多之前 回复
qq_21194023
qq_21194023 感谢你,不过你好像忘了一点,写入后应该关闭缓冲, fileAReader.flush();,要不然数据量大的话会有问题的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java操作文件工具类
文件工具类java操作文件工具类java操作文件工具类java操作文件工具类java操作文件工具类
MapReduce处理日志框架
最近完成了日志处理框架,由于日志也是文本,不需要自定义读取接口(图像需要)。故主要工作就是将日志格式进行解析和对日志要进行什么操作。 在map函数中,调用编写的日志解析接口实现对每一条日志的解析,然后对解析后的日志进行指定的操作。代码如下: public class Map extends Mapper { private IntWritable one = new IntWritab
mapreduce处理中文输入和输出
此文章对于mapreduce处理中文输入和输出做了很好的阐述,遇到此问题值得参考
Hadoop使用MapReduce处理百万行Json格式数据
需求: 每行数据格式"{\"movie\":\"2599\",\"rate\":\"5\",\"timeStamp\":\"957716949\",\"uid\":\"6040\"}" 从其中计算出每个用户评分最高的十步电影movie值和rate值 输出为uid:...movie...rate... 思路: map端先将读取的json数据转成pojo对象,所以要创建一个bean用
使用JAVA API和MapReduce读取HBase里的数据(可用作HBase数据清洗)
使用JAVA API和MapReduce读取HBase里的数据
MapReduce编程实战之“初识”
MapReduce是Hadoop(这种大数据处理生态环境)的编程模型,既然称为模型,则意味着它有固定的形式,MapReduce编程模型,就是Hadoop生态环境进行数据分析处理的固定的编程形式。本文通过实例,演示Java和Ruby写的MapReduce代码。
mapreduce只用map来处理数据小案例,减少reduce一端数据倾斜
mapreduce一般是由map和reduce分工合作来完成任务,但有时map分区之后数据不一致导致数据倾斜,某一个reduce任务负载过大,运行速度减慢。本案例以map代替reduce的工作来解决数据倾斜问题。 源码如下: package MR_mapside_join; import java.io.BufferedReader; import java.io.FileIn
MapReduce处理“大量”图片
网上关于MapReduce的实例,到处都是WordCount或者变形,但是想做点图片处理或者视频处理的应用。于是就慢慢一点点的学习。          环境:虚拟机,ubuntu-desktop-12.04,openjdk1.7,opencv3.0          第一步,必须是安装hadoop环境,由于没有足够的机器,就装个虚拟机搞个伪分布式吧。 比如:http://www.cnblog
MapReduce json数据应用
一、实验目的 1. 了解熟悉linux命令。 2. 学习hadoop的安装和配置。 3. 学习编写基础的MR代码。 二、实验内容 1. 建立hadoop 完全分布式模式。 2. 上传数据并且对数据进行查询。 3. 通过安装Hadoop了解Hadoop的原理     三、实验原理  MapReduce是Hadoop的核心技术之一,“Map(展开)”就是将一个任
如何在Hadoop的MapReduce程序中处理JSON文件
简介: 尽量在写MapReduce程序处理日志时,需要解析JSON配置文件,简化Java程序和处理逻辑。但是Hadoop本身似乎没有内置对JSON文件的解析功能,我们不得不求助于第三方JSON工具包。这里选择json-simple实现我们的功能。 在Hadoop上执行Java程序的命令如下所示: [hadoop@localhost]$ hadoop jar my-mapreduce.ja