我试图将数据框保存在表配置单元中。

在spark 1.6中可以正常工作,但在迁移到2.2.0后不再可用。

这是代码:

blocs
      .toDF()
      .repartition($"col1", $"col2", $"col3", $"col4")
      .write
      .format("parquet")
      .mode(saveMode)
      .partitionBy("col1", "col2", "col3", "col4")
      .saveAsTable("db".tbl)

现有表project_bsc_dhr.bloc_views的格式为HiveFileFormat。它与指定的格式ParquetFileFormat不匹配。
org.apache.spark.sql.AnalysisException:现有表project_bsc_dhr.bloc_views的格式为HiveFileFormat。它与指定的格式ParquetFileFormat不匹配。

最佳答案

收到错误后,我刚刚尝试使用.format("hive")转换为saveAsTable并成功运行。

我也将不建议使用来使用作者建议的insertInto,因为它看起来不是类型安全的(尽可能多地将此术语应用于SQL API),并且在忽略列名和使用位置的方式中容易出错-base分辨率。

关于apache-spark - Spark2无法将数据帧写入 Parquet hive 表: HiveFileFormat`.与指定格式 `ParquetFileFormat`不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54112605/

10-11 03:48
查看更多