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