【发布时间】:2016-03-16 11:20:53
【问题描述】:
我有一个从 HDFS 文件生成的字符串 SparkRDD(名为 RDD1)。而且我还有一个字符串列表作为字典。我想在 RDD1 上应用一个映射函数,以便对于每一行字符串,我在从字典构建的 Lucene 索引之上进行搜索,并返回每行的前三个匹配项。我正在使用 Lucene 的 TopScoreDocCollector 来实现这一点。我对单机版本没有任何问题,但是一旦我在集群上运行它就会报告:
ThrowableSerializationWrapper: Task exception could not be deserialized java.lang.ClassNotFoundException: org.apache.lucene.queryparser.classic.ParseException
我的程序逻辑是首先从字典中创建一个广播变量(一个字符串列表)。然后在地图功能中。我从该广播变量构建了一个 Lucene 索引。我相信当我打电话时会发生错误:
StandardAnalyzer analyzer = new StandardAnalyzer();
我相信这不是由于忘记添加 Lucene jars 造成的。我正在使用以下程序来运行它。
spark-submit --class jinxuanw.clairvoyant.App --jars lucene-analyzers-common-5.3.1.jar,lucene-core-5.3.1.jar,lucene-queryparser-5.3.1.jar jobtitlematch-1.0.jar
【问题讨论】:
-
在您的自定义 jar 中检查您使用的是相同版本的 lucene-?-5.3.1.jar。
标签: java serialization apache-spark lucene