Я пытался улучшить производительность некоторого существующего фрейма данных spark, добавив в него ignite.Следующий код - это то, как мы в настоящее время читаем фрейм данных
val df = sparksession.read.parquet(path).cache()
Мне удалось сохранить и загрузить фрейм данных spark из ignite, как показано в следующем примере: https://apacheignite -fs.readme.io / docs / ignite-data-реперов .Следующий код показывает, как я делаю это сейчас с помощью ignite
val df = spark.read()
.format(IgniteDataFrameSettings.FORMAT_IGNITE()) //Data source
.option(IgniteDataFrameSettings.OPTION_TABLE(), "person") //Table to read.
.option(IgniteDataFrameSettings.OPTION_CONFIG_FILE(), CONFIG) //Ignite config.
.load();
df.createOrReplaceTempView("person");
SQL-запросов (например, выберите a, b, c из таблицы, где x) на кадре данных ignite работает, но производительность намного ниже, чем одна искра (т.е.без воспламенения (непосредственно запрос DF), запрос SQL часто занимает от 5 до 30 секунд, и обычно только в 2 или 3 раза медленнее искра.Я заметил, что для каждого запроса происходит обмен данными (более 100 МБ +) между контейнером зажигания и контейнером искры.Запрос с тем же «где», но меньшим результатом обрабатывается быстрее.В целом, я чувствую, что ignite dataframe поддерживает простую обертку поверх spark.Следовательно, в большинстве случаев это медленнее, чем одна искра.Правильно ли мое понимание?
Кроме того, следуя примеру кода, когда кеш создается в ignite, он автоматически получает имя типа «SQL_PUBLIC_name_of_table_in_spark».Поэтому я не смог изменить конфигурацию кеша в xml (поскольку мне нужно указать имя кеша в xml / code, чтобы настроить его, и ignite пожалуется, что он уже существует) Ожидается ли это?
Спасибо