我有一個從HDFS文件生成的String SparkRDD(名爲RDD1)。我還有一個String作爲字典的列表。我想在RDD1上應用一個map函數,這樣對於每一行字符串,我都會搜索一個由字典構建的Lucene索引,然後返回每行的前三個匹配項。我使用Lucene的TopScoreDocCollector來實現這一點。我有一個單機版本沒有問題,但一旦我在集羣中運行它,它報道:用於Apache Spark RDD映射轉換的序列化Lucene StandardAnalyzer
ThrowableSerializationWrapper: Task exception could not be deserialized java.lang.ClassNotFoundException: org.apache.lucene.queryparser.classic.ParseException
我的程序邏輯是首先創建從字典廣播變量(字符串列表)。然後在地圖功能中。我從該廣播變量構建一個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
在你自定義jar中檢查你使用的是相同版本的lucene - ? - 5.3.1.jar。 – Kaushal