【问题标题】:Write a spark DataFrame to a table将 spark DataFrame 写入表
【发布时间】:2020-12-22 07:27:26
【问题描述】:

我正在尝试理解名为 saveAsTable 的 spark DataFrame API 方法。

我有以下问题

  • 如果我只是使用 saveAsTable API 编写一个数据帧 df7.write.saveAsTable("t1"),(假设 t1 之前不存在),新创建的表是否会是一个 hive 表,可以使用 Hive QL 在 spark 外部读取?
  • spark 是否还会创建一些非 Hive 表(使用 saveAsTable API 创建但无法使用 HiveQL 在 spark 外部读取)?
  • 如何检查一个表是 Hive 表还是非 Hive 表?

(我是大数据处理的新手,如果问题表述不当,请见谅)

【问题讨论】:

    标签: apache-spark hive apache-spark-sql


    【解决方案1】:

    是的。新创建的表将是 hive 表,可以从 Hive CLI 查询(仅当 DataFrame 是从单个输入 HDFS 路径创建的,即从非分区的单个输入 HDFS 路径创建时)。

    以下是DataFrameWriter.scala 类中的文档注释。 Documentation link

    当 DataFrame 从非分区创建时 HadoopFsRelation 具有单个输入路径,以及数据源 provider 可以映射到现有的 Hive 内置 SerDe(即 ORC 和 Parquet),表以 Hive 兼容的格式保存,这 意味着其他系统(如 Hive)将能够读取此表。 否则,表将以 Spark SQL 特定格式保存。

    【讨论】:

      【解决方案2】:

      是的,你可以做到。您的表可以按列分区,但不能使用分桶(这是 spark 和 hive 之间的问题)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-12
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 2018-11-30
        • 2017-01-09
        • 2019-09-06
        • 1970-01-01
        相关资源
        最近更新 更多