У меня есть String SparkRDD (с именем RDD1), сгенерированный из файла HDFS. И у меня также есть список String в качестве словаря. Я хочу применить функцию отображения на RDD1, чтобы для каждой строки строки я выполнял поиск поверх индекса Lucene, построенного из словаря, и возвращал тройку совпадений для каждой строки. Для этого я использую TopScoreDocCollector от Lucene. У меня нет никаких проблем с одной версией машины, но когда я запускаю его на кластере он сообщает:Сериализация Lucene StandardAnalyzer для преобразования карты Apache Spark RDD
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
В вашем обычном банке проверьте, что вы используете ту же версию lucene -? - 5.3.1.jar. – Kaushal