Как уменьшить задержку запуска с помощью Apache Iceberg на AWS EMR Serverless?

Я использую Apache Iceberg на Apache ERM Serverless при поддержке каталога данных AWS Glue . Следуя информации, найденной на этой странице , я использую предварительно инициализированные рабочие процессы, которые должны позволить EMR «поддерживать теплый пул рабочих процессов для приложения, чтобы оно могло предоставлять ответ менее чем за секунду для начала обработки запросов». К сожалению, приложению требуется около 12 секунд для запуска и 40 секунд для загрузки всех зависимостей перед обработкой любого фактического задания. Что нужно сделать, чтобы сократить время с 52 до менее секунды? Я не эксперт по Java, и я подозреваю, что могут быть лучшие способы внедрения зависимостей, чтобы держать их в тепле на предварительно инициализированных воркерах, но я не знаю, как это сделать.

      import org.apache.iceberg.Table;
import org.apache.iceberg.aws.glue.GlueCatalog;
import org.apache.iceberg.catalog.Catalog;
import org.apache.iceberg.catalog.TableIdentifier;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

public final class JavaSpark {
  public static void main(String[] args) throws Exception {
    System.out.println("Started");
    SparkSession spark = SparkSession
      .builder()
      .appName("Java SparkSQL Example")
      .getOrCreate();

    GlueCatalog catalog = new GlueCatalog();
    TableIdentifier tableId = TableIdentifier.of("test", "mytable");
    Table table = catalog.loadTable(tableId);
    TableScan scan = table.newScan();

    spark.sql("CREATE DATABASE IF NOT EXISTS dev.test;");
    spark.sql(
      "CREATE TABLE IF NOT EXISTS dev.test.mytable (id bigint, data string) USING iceberg;"
    );

    spark.sql(
      "INSERT INTO dev.test.mytable VALUES (1, 'one'), (2, 'two');"
    );

    Dataset<Row> sqlDF = spark.sql("SELECT * FROM dev.test.mytable;");
    sqlDF.show();

    spark.sql("DELETE FROM dev.test.mytable WHERE id=1;");

    spark.stop();
    System.out.println("Stopped");
  }
}

0 ответов

Другие вопросы по тегам