美文网首页
【解决方案】Spark 写入 Hive 出现HiveFileFo

【解决方案】Spark 写入 Hive 出现HiveFileFo

作者: 齐舞647 | 来源:发表于2023-08-30 10:04 被阅读0次

    背景:

    在 python spark 任务中,调用

    df.repartition("a","b","c").write.format("parquet").mode(saveMode).partitionBy("date").saveAsTable("table_name")
    

    出现报错,提示:

    org.apache.spark.sql.AnalysisException: The format of the existing table arcsoft_analysis.zz_table is `HiveFileFormat`. It doesn't match the specified format `ParquetFileFormat`.
    

    提示我们写入 hive 的 fileformat 不对。

    这个报错在 spark 1.x 版本不会报错,在 spark 2.x 版本开始出现。

    解决方案

    1. 如果我们的 hive 表不是分区表。将format("parquet")改成 format("hive")即可。

    将format设置为Hive以后,无论hive建表的时候,使用的fileformat使用的是哪一种,都没有关系。

    1. 如果我们的 hive 表是分区表,可以先将数据存到一个临时表,再调用 spark.sql 插入数据。
            df = spark.createDataFrame(data, ["a", "b", "c", "ctime"])
            df.createOrReplaceTempView("temp_view")
            spark.sql("""
            INSERT INTO $hive_table_name PARTITION (date = '{}')
            select * from temp_view
            """.format(date))
    

    相关文章

      网友评论

          本文标题:【解决方案】Spark 写入 Hive 出现HiveFileFo

          本文链接:https://www.haomeiwen.com/subject/scoomdtx.html