如何在使用 pyspark 读取镶木地板文件时指定架构?
How to specify schema while reading parquet file with pyspark?
使用 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.apply(DataSource.scala:189)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun.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个peaces。
我已经完成了同样的快速实现
希望对您有所帮助!!...
当您尝试将空目录读取为 parquet 时,通常会发生此错误。
例如,如果您创建一个空的 DataFrame,将其写入 parquet 中然后读取它,则会出现此错误。
您可以在写入之前使用 rdd.isEmpty()
检查 DataFrame 是否为空。
使用 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.apply(DataSource.scala:189)
at org.apache.spark.sql.execution.datasources.DataSource$$anonfun.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个peaces。
我已经完成了同样的快速实现
希望对您有所帮助!!...
当您尝试将空目录读取为 parquet 时,通常会发生此错误。
例如,如果您创建一个空的 DataFrame,将其写入 parquet 中然后读取它,则会出现此错误。
您可以在写入之前使用 rdd.isEmpty()
检查 DataFrame 是否为空。