使用scala或pyspark读取hadoop中存储的Parquet文件时,出现错误:
# scala
var dff = spark.read.parquet("/super/important/df")
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)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.sql.execution.datasources.DataSource.org$apache$spark$sql$execution$datasources$DataSource$$getOrInferFileFormatSchema(DataSource.scala:188)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:387)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
at org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:441)
at org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:425)
... 52 elided
或
sql_context.read.parquet(output_file)
导致相同的错误。
错误消息非常清楚必须做什么:无法推断Parquet地板的模式。必须手动指定。;。但我在哪能具体说明呢?
spark2.1.1、hadoop2.5、dataframes是在pyspark的帮助下创建的。文件被分成10个部分。
2条答案
按热度按时间uqzxnwby1#
我已经做了同样的快速实施
希望这有帮助!!。。。
h43kikqp2#
当您尝试将空目录读取为parquet时,通常会发生此错误。例如,如果您创建了一个空的Dataframe,将其写入parquet中,然后读取,则会出现此错误。您可以检查Dataframe是否为空
rdd.isEmpty()
在写之前。