Пиши AVRO от spark-shell в Spark 2.4 - PullRequest
       18

Пиши AVRO от spark-shell в Spark 2.4

0 голосов
/ 30 апреля 2019

Spark 2.4.0 на Java 1.8.0_161 (Scala 2.11.12)

Команда запуска: spark-shell --jars=spark-avro_2.11-2.4.0.jar

В настоящее время работаю над некоторыми POC, используя небольшие файлы avro, я хочу бытьвозможность прочитать в (одном) файле AVRO, внести изменения, а затем записать их обратно.

Чтение в порядке: val myAv = spark.read.format("avro").load("myAvFile.avro")

Однако я получаю эту ошибку при попыткевыпишем обратно (даже до внесения каких-либо изменений):

scala> myAv.write.format("avro").save("./output-av-file.avro")

org.apache.spark.sql.AnalysisException:
Datasource does not support writing empty or nested empty schemas.
Please make sure the data schema has at least one or more column(s).
         ;
  at org.apache.spark.sql.execution.datasources.DataSource$.org$apache$spark$sql$execution$datasources$DataSource$$validateSchema(DataSource.scala:733)
  at org.apache.spark.sql.execution.datasources.DataSource.planForWriting(DataSource.scala:523)
  at org.apache.spark.sql.DataFrameWriter.saveToV1Source(DataFrameWriter.scala:281)
  at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:270)
  at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:228)
  ... 49 elided

Я пытался указать схему кадра данных вручную, но безрезультатно: .write.option("avroSchema", c_schema.toString).format("avro") ...

1 Ответ

1 голос
/ 30 апреля 2019

Причина вполне очевидна: схема выглядит пустой. см. Здесь из кода

if (hasEmptySchema(schema)) {
      throw new AnalysisException(
        s"""
           |Datasource does not support writing empty or nested empty schemas.
           |Please make sure the data schema has at least one or more column(s).
         """.stripMargin)
    }
...