首页 文章

如何在使用pyspark读取镶木地板文件时指定模式?

提问于
浏览
1

在使用scala或pyspark读取存储在hadoop中的镶木地板文件时,会发生错误:

#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的架构 . 必须手动指定 . 但是我可以在哪里指定它?

Spark 2.1.1,Hadoop 2.5,数据帧是在pyspark的帮助下创建的 . 文件分为10个和平 .

2 回答

  • 0

    当您尝试将空目录读取为镶木地板时,通常会发生此错误 . 例如,如果您创建一个空的DataFrame,将其写入镶木地板然后读取它,则会出现此错误 . 在写入之前,您可以使用 rdd.isEmpty() 检查DataFrame是否为空 .

  • 1

    我已经做了相同的快速实现

    enter image description here

    Hope this Helps!!...

相关问题