Apache spark 将spark数据帧写入表

Apache spark 将spark数据帧写入表,apache-spark,hive,apache-spark-sql,Apache Spark,Hive,Apache Spark Sql,我试图理解spark DataFrame API方法saveAsTable 我有以下问题 如果我只是使用saveAsTable API编写一个数据帧 df7.write.saveAsTable(“t1”)(假设t1之前不存在),新创建的表是否是可以使用配置单元QL在spark外部读取的配置单元表 spark是否也创建了一些非配置单元表(这些表是使用saveAsTable API创建的,但不能在spark之外使用HiveQL读取) 如何检查表是配置单元表还是非配置单元表 (我不熟悉大数据处理,

我试图理解spark DataFrame API方法saveAsTable

我有以下问题

  • 如果我只是使用saveAsTable API编写一个数据帧
    df7.write.saveAsTable(“t1”)
    (假设t1之前不存在),新创建的表是否是可以使用配置单元QL在spark外部读取的配置单元表
  • spark是否也创建了一些非配置单元表(这些表是使用saveAsTable API创建的,但不能在spark之外使用HiveQL读取)
  • 如何检查表是配置单元表还是非配置单元表

(我不熟悉大数据处理,所以如果问题措辞不恰当,请原谅)

是的。新创建的表将是配置单元表,可以从
hive CLI
查询(仅当数据帧是从单输入
HDFS
路径创建的,即从非分区单输入
HDFS
路径创建的时)

下面是
DataFrameWriter.scala
类中的文档注释

当数据帧是从非分区的
HadoopFsRelation
具有单个输入路径和数据源 提供程序可以映射到现有的配置单元内置SerDe(即ORC和 拼花地板),该表以与配置单元兼容的格式保存,该格式 这意味着其他系统(如Hive)将能够读取此表。 否则,该表将以特定于Spark SQL的格式持久化


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