因此,使用类似以下内容的代码:
大部分数据已经过了清理(但 URL 大部分情况下并没有...) 而且 URL 继续如下: $(KGrHqZHJCgFBsO4dC3MBQdC2)Y4Tg~~60_1.JPG?set_id=8800005007 在文件中.... 所以有点烦人。 这也是第112个条目,我还有其他文件解析没有错误...但这个文件让我很困惑,主要是因为我不知道为什么 scan.nextLine() 不起作用... 通过调试输出,JSON 错误是由字符串没有正确拆分造成的。 还差点忘了,如果我尝试将问题行放入自己的文件中并解析,它也运行得非常好。 编辑: 如果我删除大约相同位置的有问题的行,它也会崩溃。 使用 JVM 1.6 和 1.7 尝试过。 解决方法: BufferedReader scan = new BufferedReader(new FileReader(files[i])); 而不是 scanner....
这样做:
for (int i = 0; i < files.length; i++) {
if (!files[i].isDirectory() && files[i].canRead()) {
try {
Scanner scan = new Scanner(files[i]);
System.out.println("Generating Categories for " + files[i].toPath());
while (scan.hasNextLine()) {
count++;
String line = scan.nextLine();
System.out.println(" ->" + line);
line = line.split("\t", 2)[1];
System.out.println("!- " + line);
JsonParser parser = new JsonParser();
JsonObject object = parser.parse(line).getAsJsonObject();
Set<Entry<String, JsonElement>> entrySet = object.entrySet();
exploreSet(entrySet);
}
scan.close();
// System.out.println(keyset);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
当浏览Hadoop输出文件时,中间的一个JSON对象出现了问题...因为scan.nextLine()在将其带到分割之前并没有获取整行。即,输出结果是:
->0 {"Flags":"0","transactions":{"totalTransactionAmount":"0","totalQuantitySold":"0"},"listingStatus":"NULL","conditionRollupId":"0","photoDisplayType":"0","title":"NULL","quantityAvailable":"0","viewItemCount":"0","visitCount":"0","itemCountryId":"0","itemAspects":{ ... "sellerSiteId":"0","siteId":"0","pictureUrl":"http://somewhere.com/45/x/AlphaNumeric/$(KGrHqR,!rgF!6n5wJSTBQO-G4k(Ww~~
!- {"Flags":"0","transactions":{"totalTransactionAmount":"0","totalQuantitySold":"0"},"listingStatus":"NULL","conditionRollupId":"0","photoDisplayType":"0","title":"NULL","quantityAvailable":"0","viewItemCount":"0","visitCount":"0","itemCountryId":"0","itemAspects":{ ... "sellerSiteId":"0","siteId":"0","pictureUrl":"http://somewhere.com/45/x/AlphaNumeric/$(KGrHqR,!rgF!6n5wJSTBQO-G4k(Ww~~
大部分数据已经过了清理(但 URL 大部分情况下并没有...) 而且 URL 继续如下: $(KGrHqZHJCgFBsO4dC3MBQdC2)Y4Tg~~60_1.JPG?set_id=8800005007 在文件中.... 所以有点烦人。 这也是第112个条目,我还有其他文件解析没有错误...但这个文件让我很困惑,主要是因为我不知道为什么 scan.nextLine() 不起作用... 通过调试输出,JSON 错误是由字符串没有正确拆分造成的。 还差点忘了,如果我尝试将问题行放入自己的文件中并解析,它也运行得非常好。 编辑: 如果我删除大约相同位置的有问题的行,它也会崩溃。 使用 JVM 1.6 和 1.7 尝试过。 解决方法: BufferedReader scan = new BufferedReader(new FileReader(files[i])); 而不是 scanner....