繁体   English   中英

序列化Lucene StandardAnalyzer,用于Apache Spark RDD映射转换

[英]Serialize Lucene StandardAnalyzer for Apache Spark RDD map transformation

我有一个从HDFS文件生成的String SparkRDD(名为RDD1)。 我还有一个字符串列表作为字典。 我想在RDD1上应用map函数,这样对于每一行字符串,我在从字典构建的Lucene索引之上进行搜索,并返回每行的前三个匹配。 我正在使用Lucene的TopScoreDocCollector实现这一目标。 我对单机版本没有任何问题,但是一旦我在集群上运行它报告:

ThrowableSerializationWrapper: Task exception could not be deserialized java.lang.ClassNotFoundException: org.apache.lucene.queryparser.classic.ParseException

我的程序逻辑首先从字典(字符串列表)创建一个广播变量。 然后在map函数中。 我从该广播变量构建Lucene索引。 我相信当我打电话时会发生错误:

StandardAnalyzer analyzer = new StandardAnalyzer();

我相信这不是因忘记添加Lucene罐子造成的。 我正在使用以下程序来运行它。

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 

遗憾的是, StandardAnalyzer不是Serializable,因此无法将此类对象从驱动程序移动到执行程序。 然而,可以绕过序列化问题在执行程序中实例化这样的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM