如何在mapreduce作业中找到最后一行

时间:2014-12-09 15:15:47

标签: java hadoop

我正在处理.csv文件。我想只打印我的第一行和最后一行。我使用普通的Java代码完成了这个,但是我没有找到任何Inputformat来读取行并查找第一行和最后一行。我的Java代码如下所示。

public class CSVToJSON {
public static void main(String[] args) throws ParseException, ClassNotFoundException, FileNotFoundException { 
    File file = new File("/../Desktop/ABCD.txt");
    try  {
    BufferedReader csvFile = new BufferedReader(new FileReader("/../Desktop/.csv")); 
    BufferedWriter jsonFile = new BufferedWriter(new FileWriter(file));
    InputStream inputStream = new ByteArrayInputStream(jsonNew.getBytes(StandardCharsets.UTF_8));
    jsonFile.write(jsonNew);
    jsonFile.newLine();
    String next, fileContent = csvFile.readLine();
    for (boolean first = true, last = (fileContent == null); !last; first = false, fileContent = next) 
    {
       last = ((next = csvFile.readLine()) == null);
       if (first) 
    {
       String[] tab = fileContent.split(",");
       String line = "[" + tab[2] + "," + tab[3] + "," + tab[8] + "," + tab[11] + "," + tab[15] + "," + tab[16] + "],";
       InputStream inputStreamNew = new ByteArrayInputStream(line.getBytes(StandardCharsets.UTF_8));
       jsonFile.write(line);
       jsonFile.newLine();
    }else if (last) {
        String[] tab = fileContent.split(",");
        String lineLast = "[" + tab[2] + "," + tab[3] + "," + tab[8] + "," + tab[11] + "," + tab[15] + "," + tab[16] + "]" + "\n" + "];
        InputStream inputStreamNewLine = new ByteArrayInputStream(lineLast.getBytes(StandardCharsets.UTF_8));
        jsonFile.write(lineLast);
        jsonFile.newLine();
    }else {
        String[] tab = fileContent.split(",");
        String line = "[" + tab[2] + "," + tab[3] + "," + tab[8] + "," + tab[11] + "," + tab[15] + "," + tab[16] + "],";
        inputStream inputStreamNormalLine = new ByteArrayInputStream(line.getBytes(StandardCharsets.UTF_8));
        jsonFile.write(line);
        jsonFile.newLine();
    }
    }
        csvFile.close();
        jsonFile.close();
    } catch (FileNotFoundException e) {
         Logger.getLogger(CSVToJSON.class.getName()).log(Level.SEVERE, null, e);
    } catch (IOException e) {
        Logger.getLogger(CSVToJSON.class.getName()).log(Level.SEVERE, null, e);
    }

0 个答案:

没有答案