Я пытаюсь подключить SparkR 1.4.0 до Elasticsearch, используя файл jar файла elasticsearch-hadoop-2.1.0.rc1.jar
(найдено here). Это требует немного взлома, созвав функцию SparkR:::callJMethod
. Мне нужно получить объект jobj
R для нескольких классов Java. Для некоторых классов, это работает:sparkR 1.4.0: как включить банки
SparkR:::callJStatic('java.lang.Class',
'forName',
'org.apache.hadoop.io.NullWritable')
Но для других, это не делает:
SparkR:::callJStatic('java.lang.Class',
'forName',
'org.elasticsearch.hadoop.mr.LinkedMapWritable')
Уступая ошибку:
java.lang.ClassNotFoundException:org.elasticsearch.hadoop.mr.EsInputFormat
Похоже, что Java не находит классы org.elasticsearch.*
, хотя я попытался включить их в командной строке --jars
аргумент и функцию sparkR.init(sparkJars = ...)
.
Любая помощь была бы принята с благодарностью. Кроме того, если это вопрос, который более правильно относится к фактическому трекеру SparkR, может ли кто-нибудь указать мне его? Я посмотрел и не смог его найти. Кроме того, если кто-то знает альтернативный способ зацепить SparkR
до Elasticsearch
, я был бы рад услышать это.
Спасибо! Бен
Ошибка была связана с тем, что в SparkR использовались баночки, обозначенные символом '--jars'. У нас было исправление, проверенное пару дней назад на https://github.com/apache/spark/pull/7001. Если вы построите Spark из мастер-ветки, вы сможете попробовать это. –