Eri*_*rik 5 apache-spark parquet databricks
是否可以使用已知模式保存一个空的 DataFrame,以便将模式写入文件,即使它有 0 条记录?
def example(spark: SparkSession, path: String, schema: StructType) = {
val dataframe = spark.createDataFrame(spark.sparkContext.emptyRDD[Row], schema)
val dataframeWriter = dataframe.write.mode(SaveMode.Overwrite).format("parquet")
dataframeWriter.save(path)
spark.read.load(path) // ERROR!! No files to read, so schema unknown
}
Run Code Online (Sandbox Code Playgroud)
这是我从 Databricks 支持收到的答案:
这实际上是 Spark 中的一个已知问题。已经在开源 JIRA -> https://issues.apache.org/jira/browse/SPARK-23271 中完成了修复。有关此行为如何从 2.4 更改的更多详细信息,请查看此文档更改 https://github.com/apache/spark/pull/20525/files#diff-d8aa7a37d17a1227cba38c99f9f22511R1808 该行为将从 Spark 2.4 更改。在此之前,您需要采用以下任何一种方式
- 使用至少一条记录保存数据帧以保留其架构
- 将架构保存在 JSON 文件中并稍后使用
小智 5
我在 Spark 2.1.0 中遇到了类似的问题。我在写之前使用重新分区解决了它。
df.repartition(1).write.parquet("my/path")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5260 次 |
最近记录: |