如何在使用Pypark读取Parquet文件时指定模式?

x8goxv8g  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(458)

使用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个部分。

uqzxnwby

uqzxnwby1#

我已经做了同样的快速实施

希望这有帮助!!。。。

h43kikqp

h43kikqp2#

当您尝试将空目录读取为parquet时,通常会发生此错误。例如,如果您创建了一个空的Dataframe,将其写入parquet中,然后读取,则会出现此错误。您可以检查Dataframe是否为空 rdd.isEmpty() 在写之前。

相关问题