Size: a a a

2020 November 19

T

T in Data Engineers
Sergey Sheremeta
дяденьки, здравствуйте!
подскажите, как быть в такой ситуации:
- есть Спарк-джоба, вычитывающая перекошенные данные
- по завершению вычитки нужно подсчитать общее кол-во строк и записать в HDFS
- при этом хочется отпустить ресурсы для уже отработавших экзекуторов, но они не могут де-аллоцироваться - так как в них закешированы данные датафрейма

нечо вроде:
val skewedDF = spark.read.format("пыщь-пыщь").load()
skewedDF.persist()
val cnt = skewedDF.count()
skewedDF.write.parquet("фьють-фьють")
skewedDF.unpersist()

как-то иначе count считать? аккумулятором каким-нибудь?
если логика имено такая то можно постичтать акумуляторм да
источник

S

Stanislav in Data Engineers
а разве паркет не хранит мету для данных?
источник

S

Stanislav in Data Engineers
это ж не цсв, где надо читать-читать-считать-считать
источник

SS

Sergey Sheremeta in Data Engineers
Стас, спасибо!
получается что
spark.read.parquet("data_path").count()
не вычитывает все содержимое файлов, а подтягивает только метаданные из футеров?
тогда действительно проще не персистить, а записать в паркеты и сразу из них считать count()!
источник

S

Stanislav in Data Engineers
только надо в сам спарк заглянуть в каунт и убедится, что он это делает для паркета
но в теории - должен
источник

AG

Alexander Gorokhov in Data Engineers
Sergey Sheremeta
дяденьки, здравствуйте!
подскажите, как быть в такой ситуации:
- есть Спарк-джоба, вычитывающая перекошенные данные
- по завершению вычитки нужно подсчитать общее кол-во строк и записать в HDFS
- при этом хочется отпустить ресурсы для уже отработавших экзекуторов, но они не могут де-аллоцироваться - так как в них закешированы данные датафрейма

нечо вроде:
val skewedDF = spark.read.format("пыщь-пыщь").load()
skewedDF.persist()
val cnt = skewedDF.count()
skewedDF.write.parquet("фьють-фьють")
skewedDF.unpersist()

как-то иначе count считать? аккумулятором каким-нибудь?
Вот кстати да. Не хватает прозрачности какой то что-ли. Ну записал он данные, а сколько строк, какой объем? По идее, эти данные ведь доступны в спарк уй после завершения джобы может их можно как то через доступный интерфейс выдрать.
источник
2020 November 20

НК

Николай Крупий... in Data Engineers
Алексей
стоит вообще изучать mdx, насколько распространен сейчас этот язык запросов?
Вроде как в своё время метил чуть ли не на отраслевой стандарт, типа как SQL, но только для (M)OLAP, но со временем популярность всего этого начала падать в сторону SQL, как и популярность классического OLAP подхода, который этот язык и породил...

Где-то что-то такое подробно слышал (на докладе каком-то что ли), но сейчас только вспомнить не могу.

Звучало всё очень логично и обоснованно)
источник

DN

Dmitriy Novikov in Data Engineers
Алексей
стоит вообще изучать mdx, насколько распространен сейчас этот язык запросов?
Не стоит
источник

А

Алексей in Data Engineers
Alexander Gorokhov
Вот кстати да. Не хватает прозрачности какой то что-ли. Ну записал он данные, а сколько строк, какой объем? По идее, эти данные ведь доступны в спарк уй после завершения джобы может их можно как то через доступный интерфейс выдрать.
те значения, что в spark ui, можно получить через события спарка: https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/scheduler/SparkListener.html
источник

AG

Alexander Gorokhov in Data Engineers
А через петон туда присосаться можно?
источник

А

Алексей in Data Engineers
Alexander Gorokhov
А через петон туда присосаться можно?
хз, наверно, есть пример для скалы ток:
var outputWritten = 0L
   spark.sparkContext.addSparkListener(new SparkListener() {
     override def onTaskEnd(taskEnd: SparkListenerTaskEnd) {
       val metrics = taskEnd.taskMetrics
       outputWritten += metrics.outputMetrics.recordsWritten
     }
   })
источник

SS

Sergey Sheremeta in Data Engineers
Алексей
хз, наверно, есть пример для скалы ток:
var outputWritten = 0L
   spark.sparkContext.addSparkListener(new SparkListener() {
     override def onTaskEnd(taskEnd: SparkListenerTaskEnd) {
       val metrics = taskEnd.taskMetrics
       outputWritten += metrics.outputMetrics.recordsWritten
     }
   })
источник

С

Сергей in Data Engineers
источник

А

Алексей in Data Engineers
где вы такие стикеры берете :)
источник

A

Alex in Data Engineers
суровая работа de

осталось только чёрную резиновую уточку запостить
источник

SS

Sergey Sheremeta in Data Engineers
на работе всем выдают
источник

С

Сергей in Data Engineers
Sergey Sheremeta
на работе всем выдают
Сами рисуем
источник

A

Alex in Data Engineers
Сергей
Сами рисуем
плохой у вас соц пакет, если даже стикеры не выдают
источник

С

Сергей in Data Engineers
источник

A

Alexander in Data Engineers
Есть ли знатоки dask? Считываю с S3 в датафрейм множество csv.gz файлов, выполняю определенные манипуляции над датафреймом, затем пытаюсь залить обратно на S3 и получаю SIGKILL.
источник