Когда базовые файлы изменились, должен ли PySpark обновить sh представление или исходные таблицы? - PullRequest
0 голосов
/ 27 февраля 2020

Допустим, у нас есть таблица Hive foo, которая поддерживается набором паркетных файлов, например, s3://some/path/to/parquet. Известно, что эти файлы обновляются не реже одного раза в день, но не всегда в один и тот же час дня.

У меня есть вид на эту таблицу, например, определенный как

spark.sql("SELECT bar, count(baz) FROM foo GROUP BY bar").createOrReplaceTempView('foo_view')

Когда я использую foo_view, приложение иногда завершается с ошибкой

org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 975.0 failed 4 times, most recent failure: Lost task 0.3 in stage 975.0 (TID 116576, 10.56.247.98, executor 193): com.databricks.sql.io.FileReadException: Error while reading file s3a://some/path/to/parquet. It is possible the underlying files have been updated. You can explicitly invalidate the cache in Spark by running 'REFRESH TABLE tableName' command in SQL or by recreating the Dataset/DataFrame involved.

Я пытался поставить префикс всех моих запросов на foo_view с помощью вызова spark.catalog.refreshTable('foo'), но проблема продолжает появляться .

Я правильно делаю? Или я должен вызвать refreshTable() в представлении вместо исходной таблицы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...