StormCrawler集成SQL模块爬取阶段遇ParseFilters异常求助
解决StormCrawler Parse Bolt的JSON解析异常问题
从你给出的异常堆栈信息来看,问题不是StringUtils为空,而是你的parsefilters.json文件存在JSON语法错误——具体是遇到了意外的}符号,本该是双引号开始字段名的位置出现了错误字符。下面是一步步的解决方法:
1. 定位parsefilters.json文件
首先确认这个文件的位置:
- StormCrawler默认会从项目的classpath下加载
parsefilters.json - 如果你在配置文件(比如
crawler-conf.yaml或my-config.yaml)里设置了parsefilters.config.file参数,就按这个参数指定的路径去找
2. 检查并修复JSON语法错误
异常提示明确指向JSON格式问题,重点排查以下几点:
- 所有字段名必须用双引号包裹(JSON不允许单引号)
- 数组或对象的最后一个元素后面不能有多余的逗号
- 大括号
{}和中括号[]必须成对闭合,没有遗漏或多余的符号
比如,错误的写法可能是这样(最后多了逗号或者引号错误):
[ { "class": "com.digitalpebble.stormcrawler.parse.filter.DomainFilter", "name": "DomainFilter", "params": { "exclude": [] }, // 这里多了逗号 } ]
你可以用这个标准的parsefilters.json示例作为参考修改:
[ { "class": "com.digitalpebble.stormcrawler.parse.filter.DomainFilter", "name": "DomainFilter", "params": { "exclude": [] } }, { "class": "com.digitalpebble.stormcrawler.parse.filter.ContentLengthFilter", "name": "ContentLengthFilter", "params": { "minLength": 10 } } ]
3. 验证JSON文件的有效性
修改后,你可以用命令行工具快速验证JSON是否合法:
python -m json.tool parsefilters.json
如果文件格式正确,会输出格式化后的内容;如果有错误,会直接提示错误位置。
4. 额外排查点
- 确认
parsefilters.json文件的权限正常,StormCrawler进程能读取到它 - 检查你的配置文件中是否错误覆盖了
parsefilters.config.file参数,导致加载了不存在的文件
完成以上步骤后,重新运行你的StormCrawler拓扑,应该就能解决这个解析异常了。
内容的提问来源于stack exchange,提问作者aigujin
相关产品推荐
相关产品推荐

