У нас есть много наборов данных паркета, разбитых на год / месяц / день / час.
Некоторые из этих часов пусты, имея только один _SUCCESS
файл.
Мы реализуем задания, которые повторяются по всем разделам и выполняем работу. Мы сталкиваемся с проблемами при открытии пустых наборов данных. Сбой с org.apache.spark.sql.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.
(используя EMR5.3.0 - мы работаем над тем, чтобы избавиться от зависимости, чтобы мы могли перейти на более позднюю версию)
Пример Spark-shell:
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.1.0
/_/
Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_121)
Type in expressions to have them evaluated.
Type :help for more information.
scala> val df = spark.read.parquet("s3://some-bucket/empty-dataset/")
org.apache.spark.sql.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.;
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$8.apply(DataSource.scala:189)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$8.apply(DataSource.scala:189)
Как говорит spark, я могу указать схему, но это нецелесообразно для меня, поскольку схема велика и отличается для каждого раздела (не спрашивайте).
Мое предпочтительное решение было бы, если бы спарк мог быть настроен на вывод пустых наборов данных в пустые схемы.