gpt4 book ai didi

java - 序列化 Lucene StandardAnalyzer 以进行 Apache Spark RDD 映射转换

转载 作者:行者123 更新时间:2023-12-02 09:49:17 25 4
gpt4 key购买 nike

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


ThrowableSerializationWrapper:任务异常无法反序列化 java.lang.ClassNotFoundException:org.apache.lucene.queryparser.classic.ParseException

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

StandardAnalyzer analyzer = new StandardAnalyzer();

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

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 不可序列化,因此无法将此类对象从驱动程序移动到执行程序。尽管如此,可以在执行器中实例化此类对象,从而绕过序列化问题。

关于java - 序列化 Lucene StandardAnalyzer 以进行 Apache Spark RDD 映射转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34208401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com