将数据帧保存为外部配置单元表

问题描述 投票:5回答:3

我曾使用一种方法将数据帧保存为使用镶木地板文件格式的外部表,但是还有其他方法可以将数据帧直接保存为hive中的外部表,就像我们为托管表保存了saveAsTable一样

apache-spark hive apache-spark-sql spark-dataframe
3个回答
3
投票

你可以这样做

df.write.format(“ORC”)。options(Map(“path” - >“yourpath”))saveAsTable“anubhav”


0
投票

对于外部表,请不要使用saveAsTable。而是将数据保存在path指定的外部表的位置。然后添加分区,以便使用hive元数据进行注册。这将允许您稍后通过分区进行查询。

// hc is HiveContext, df is DataFrame. df.write.mode(SaveMode.Overwrite).parquet(path) val sql = s""" |alter table $targetTable |add if not exists partition |(year=$year,month=$month) |location "$path" """.stripMargin hc.sql(sql)


-1
投票

您还可以使用手动创建表保存数据框

dataframe.registerTempTable("temp_table");
hiveSqlContext.sql("create external table 
   table_name if not exist as select * from temp_table");

下面提到的链接有一个很好的解释创建表https://docs.databricks.com/spark/latest/spark-sql/language-manual/create-table.html

© www.soinside.com 2019 - 2024. All rights reserved.