Почему это занимает так много времени, чтобы запустить это на Spark / Dataproc? - PullRequest
1 голос
/ 03 ноября 2019

Я обрабатываю данные с помощью Spark, работающего в кластере Dataproc. Я пытался сделать кластер более мощным, добавить больше процессоров и места на диске, но это не сильно помогает. Я читаю данные из BigQuery, используя:

Dataset<Row> data = spark.read().format("bigquery")
    .option("table","project.dataset.tablename")
    .load()
    .cache();

Я использую .cache(), потому что я использую data несколько раз.

Я также пытался использовать .text() вместо .csv() и это не улучшается.

Единственное, что помогло - это уменьшить количество записей в данных.

Что я могу изменить, чтобы заставить его работать быстрее?

data.select("column1","column2")
    .write()
    .mode("append")
    .partitionBy("column1")
    .csv("gs://bucket/folder");

1 Ответ

0 голосов
/ 04 ноября 2019

Сколько рабочих и мастеров вы используете? какой размер данных вы обрабатываете?

Также для кластеров с более высокой производительностью следует использовать диски PD-SSD. Постоянные SSD-диски предназначены для рабочих нагрузок с высокой частотой случайных операций ввода-вывода в секунду, что может обеспечить значительные преимущества для некоторых рабочих нагрузок Spark и Hadoop.

также .. Вы рассматривали поток данных? У него меньше время запуска, и он автоматически масштабируется с объемом данных, ваш процесс кажется достаточно простым, есть ли причина, по которой вы используете dataproc?

...