Salvar o quadro de dados no sistema de arquivos local resulta em resultados vazios

Estamos executando o spark 2.3.0 emAWW EMR. Os seguintesDataFrame "df"não está vazio e tem tamanho modesto:

scala> df.count
res0: Long = 4067

O código a seguir funciona bem para escreverdf parahdfs:

   scala> val hdf = spark.read.parquet("/tmp/topVendors")
hdf: org.apache.spark.sql.DataFrame = [displayName: string, cnt: bigint]

scala> hdf.count
res4: Long = 4067

No entanto, usando o mesmo código para gravar em um localparquet oucsv o arquivo acaba com resultados vazios:

df.repartition(1).write.mode("overwrite").parquet("file:///tmp/topVendors")

scala> val locdf = spark.read.parquet("file:///tmp/topVendors")
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$9.apply(DataSource.scala:207)
  at org.apache.spark.sql.execution.datasources.DataSource$anonfun$9.apply(DataSource.scala:207)
  at scala.Option.getOrElse(Option.scala:121)

Podemos ver por que falha:

 ls -l /tmp/topVendors
total 0
-rw-r--r-- 1 hadoop hadoop 0 Jul 30 22:38 _SUCCESS

Então aí estánão arquivo em parquet sendo gravado.

Eu tentei isso talvez vinte vezes e para amboscsv eparquet e em dois diferentesEMR Servidores: esse mesmo comportamento é exibido em todos os casos.

Isso é umEMR bug específico? Um mais geralEC2 erro? Algo mais? Este código funciona emspark emmacos.

Caso isso importe - aqui estão as informações de versão:

Release label:emr-5.13.0
Hadoop distribution:Amazon 2.8.3
Applications:Spark 2.3.0, Hive 2.3.2, Zeppelin 0.7.3

questionAnswers(2)

yourAnswerToTheQuestion