FileReader
не может читать из HDFS, только локальная файловая система.
Путь к файлу определяется параметрами задания - FileInputFormat.addInputPath(job, new Path(args[0]));
В любом случае, вы не прочтете файл в классе Mapper.
По умолчанию MapReduce считывает файлы с разделителями строк, поэтому ваши JSON-объекты должны быть по одному на строку, например
{"votes":[]}
{"votes":[]}
. Из преобразователя вы будете анализировать текстовые объекты в JSONObject. вот так
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
JSONParser jsonParser = new JSONParser();
try {
JSONObject jsonobject = (JSONObject) jsonParser.parse(value.toString());
JSONArray jsonArray = (JSONArray) jsonobject.get("votes");
Если в файле только один объект JSON, то, вероятно, вам не следует использовать MapReduce.
В противном случае вам придется реализовать WholeFileInputFormat
и установить его в задании
job.setInputFormatClass(WholeFileInputFormat.class);