当前位置: 首页 > 知识库问答 >
问题:

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

颛孙庆
2023-03-14

使用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)

导致相同的错误。

错误消息非常清楚必须做什么:无法推断拼花的模式。必须手动指定。;。但是我在哪里可以指定它呢?

Spark 2.1.1、Hadoop 2.5、数据帧是在pyspark的帮助下创建的。文件被划分为10个peace。

共有2个答案

潘彦
2023-03-14

我做了一个快速实现为相同的

希望这有帮助!!...

松刚豪
2023-03-14

当您尝试将空目录读取为拼花时,通常会出现此错误。例如,如果您创建了一个空DataFrame,您将其写入拼花中,然后读取它,则会出现此错误。您可以在写入之前使用rdd.is空()检查DataFrame是否为空。

 类似资料:
  • 则错误如下: AttributeError:“property”对象没有属性“parquet”

  • 我正在从Impala迁移到SparkSQL,使用以下代码读取一个表: 我如何调用上面的SparkSQL,这样它就可以返回这样的东西:

  • 我只找到TextInputFormat和CsvInputFormat。那么,如何使用ApacheFlink读取HDFS中的拼花文件呢?

  • 我很难找到这个问题的答案。假设我为拼花地板编写了一个数据框,并且我使用与相结合来获得一个分区良好的拼花地板文件。请参阅下面: 现在,稍后我想读取拼花文件,所以我这样做: 数据帧是否由分区?换句话说,如果拼花地板文件被分区,火花在将其读入火花数据帧时是否会维护该分区。还是随机分区? 同样,这个答案的“为什么”和“为什么不”也会有所帮助。

  • 我们正在寻找一种解决方案,以便创建一个外部配置单元表,根据parquet/avro模式从parquet文件中读取数据。 换句话说,如何从拼花/avro模式生成hive表? 谢谢:)

  • 我需要从不是父目录或子目录的多个路径读取拼花地板文件。 例如, 从dir1\u 1和dir1\u 2读取拼花文件 现在,我正在读取每个目录并使用“unionAll”合并数据帧。有没有一种方法可以不使用unionAll从dir1\u 2和dir2\u 1读取拼花地板文件,或者有没有什么奇特的方法可以使用unionAll 谢谢