簡體   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