Guardar el marco de datos en el sistema de archivos local da como resultado resultados vacíos
Estamos ejecutando spark 2.3.0 enAWW EMR
. El seguimientoDataFrame
"df
"no está vacío y tiene un tamaño modesto:
scala> df.count
res0: Long = 4067
El siguiente código funciona bien para escribirdf
ahdfs
:
scala> val hdf = spark.read.parquet("/tmp/topVendors")
hdf: org.apache.spark.sql.DataFrame = [displayName: string, cnt: bigint]
scala> hdf.count
res4: Long = 4067
Sin embargo, usando el mismo código para escribir en un @ locparquet
ocsv
el archivo termina con resultados vacíos:
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 qué falla:
ls -l /tmp/topVendors
total 0
-rw-r--r-- 1 hadoop hadoop 0 Jul 30 22:38 _SUCCESS
Entonces alli estan archivo de parquet que se está escribiendo.
He intentado esto tal vez veinte veces y para amboscsv
yparquet
y en dos diferentesEMR
Servidores: este mismo comportamiento se exhibe en todos los casos.
¿Es esto unEMR
error específico? Un @ más generEC2
¿error? ¿Algo más? Este código funciona enspark
enmacos
.
En caso de que sea importante, aquí está la información de versiones:
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