hadoop如何读取输入文件?

Ton*_*yGW 5 csv hadoop

我有一个用hadoop mapreduce分析的csv文件.我想知道hadoop是否会逐行解析它?如果是的话,我想使用逗号分隔字符串来获取想要分析的字段.还是有其他更好的方法来解析csv并将其提供给hadoop?该文件是10 GB,逗号分隔.我想用hadoop使用java.下面的map()方法中Tex类型的参数"value"包含Map/Reduce解析的每一行? - 这是我最困惑的地方.

这是我的代码:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    try {
       String[] tokens = value.toString().split(",");

       String crimeType = tokens[5].trim();      
       int year = Integer.parseInt(tokens[17].trim()); 

       context.write(crimeType, year);

     } catch (Exception e) {...}
 }
Run Code Online (Sandbox Code Playgroud)

hrv*_*hrv 0

当你已经解析并处理了csv文件后,你就可以使用hadoop了。Hadoop 需要键值对来执行映射任务。

因此,请使用 opencsv API 之类的工具从文件中获取数据,并将其以键/值的形式提供给 Hadoop 的映射器类。

查看此链接以获取详细说明。