Использовали ли вы IgniteSparkSession ? Я не могу найти тикет, но похоже, что это известная проблема: иногда IgniteSparkSession не может запустить внутренних клиентов в физически распределенном кластере. Следующий код:
IgniteSparkSession igniteSession = IgniteSparkSession.builder()
.appName("Spark Ignite catalog example")
.igniteConfig(configPath)
.getOrCreate();
Может выдать следующее исключение:
class org.apache.ignite.IgniteIllegalStateException: Ignite instance with provided name doesn't exist. Did you call Ignition.start(..) to start an Ignite instance? [name=grid]
В качестве обходного пути вы можете попытаться запустить клиентский узел с предоставленной конфигурацией каждого искрового узла перед запуском задание, но я не уверен, что оно будет работать нормально.
Я предлагаю не использовать IgniteSparkSession , пока текущая проблема не будет исправлена.
Пожалуйста, используйте API DataFrame синтаксис:
String configPath = "client.xml";
SparkConf sparkConf = new SparkConf()
.setAppName("Example");
SparkSession session = SparkSession.builder()
.config(sparkConf)
.getOrCreate();
Dataset < Row > csvDataset = session.read()
.format("csv")
.option("sep", ",")
.option("header", true)
.load("person.csv");
Dataset < Row > resultDF = csvDataset
.select("id", "name", "city_id", "company")
.sort("id")
.limit(10000);
for (int i = 0; i < 10; i++) {
DataFrameWriter < Row > df = resultDF
.write()
.format(IgniteDataFrameSettings.FORMAT_IGNITE())
.option(IgniteDataFrameSettings.OPTION_CONFIG_FILE(), configPath)
.option(IgniteDataFrameSettings.OPTION_TABLE(), "Person")
.option(IgniteDataFrameSettings.OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS(), "id, city_id")
.option(IgniteDataFrameSettings.OPTION_CREATE_TABLE_PARAMETERS(), "template=partitioned,backups=1")
.mode(Append);
df.save();
}
session.close();
Этот код работает нормально. Я проверю проблему JIRA для этого. Возможно, я создам новый.
ОБНОВЛЕНИЕ: вот новый билет https://issues.apache.org/jira/browse/IGNITE-12637