#apache-spark #pyspark #apache-spark-sql #spark-checkpoint
Вопрос:
Я читал о контрольной точке, и она отлично подходит для моих нужд, но я не смог найти хорошего примера того, как ее использовать.
Мои вопросы таковы:
- Должен ли я указать адрес контрольной точки? Возможно ли это сделать вот так:
df.контрольная точка()
- Существуют ли какие-либо дополнительные параметры, о которых я должен знать?
- Существует ли контрольная точка по умолчанию, или я должен указать ее по умолчанию?
- Когда я проверяю фрейм данных и повторно использую его — он автоматически считывает данные из директории, в которую мы записали файлы?
Было бы здорово, если бы вы могли поделиться со мной примером использования контрольной точки в pyspark с некоторыми объяснениями. Спасибо!
Ответ №1:
Вы должны назначить фрейм данных с контрольной точкой переменной как checkpoint
«Возвращает контрольную версию этого набора данных» (https://spark.apache.org/docs/3.1.1/api/python/reference/api/pyspark.sql.DataFrame.checkpoint.html). Итак
df = df.checkpoint()
Единственный параметр eager
, который определяет, хотите ли вы, чтобы контрольная точка инициировала действие и была немедленно сохранена, это True
по умолчанию, и обычно вы хотите сохранить ее таким образом.
Вы должны установить каталог контрольных SparkContext.setCheckpointDir(dirName)
точек где-нибудь в своем сценарии, прежде чем использовать контрольные точки. В качестве альтернативы, если вы хотите сохранить в памяти вместо этого, вы можете использовать localCheckpoint()
вместо checkpoint()
, но это ненадежно, и в случае проблем/после завершения контрольные точки будут потеряны (но это должно быть быстрее, так как он использует подсистему кэширования вместо записи только на диск).
И да, он должен быть прочитан автоматически, вы можете посмотреть на сервер истории, и в начале блоков/запросов должны быть узлы «загрузка данных» (я не помню точного названия).