簡體   English   中英

重新啟動Spark后,用sqlContext.createExternalTable創建的表不可見

[英]Table created with sqlContext.createExternalTable is not visible after restart of spark

我正在使用以下語句sqlContext.createExternalTable(tableName, "parquet", someDF.schema, Map("path" -> path))創建配置單元外部表。重新啟動spark之后,創建的表不可見。 是否有可能以某種方式使用Spark和某個數據幀中的現有架構創建持久保存在Tachyon中的配置單元表? 我希望將表架構保留在配置單元metastore中。 可能嗎 ?

最好的問候,邁克爾

使用HiveContext而不是SQLContext。 從SparkSQL和DataFrame指南中:

使用HiveContext時,也可以使用saveAsTable命令將saveAsTable保存為持久表。 與registerTempTable命令不同, saveAsTable將具體化數據幀的內容並在HiveMetastore中創建指向數據的指針。 即使您重新啟動Spark程序,持久表仍將存在,只要您保持與同一metastore的連接即可。 可以通過使用表名在SQLContext上調用table方法來創建持久表的DataFrame。

默認情況下, saveAsTable將創建一個“托管表”,這意味着數據的位置將由metastore控制。 刪除表時,托管表還將自動刪除其數據。

由於HiveContext繼承自SQLContext,因此您不會從該方面失去任何功能,並且可以在Hive元存儲中查找表以及在HiveQL中編寫查詢。 你可以找到關於使用HiveContext更多信息, 在這里 ,找到其使用的例子在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM