取消
顯示的結果
而不是尋找
你的意思是:

有沒有一種方法來創建一個non-temporary火花和PySpark視圖嗎?

MartinB
貢獻者三世

你好,

當創建一個火花視圖使用SparkSQL(“創建視圖作為SELCT…”)違約,這種觀點non-temporary——視圖定義將生存火花會話集群以及火花。

在PySpark我可以使用DataFrame。createOrReplaceTempView或DataFrame.createOrReplaceGlobalTempView創建一個臨時DataFrame視圖。

有沒有一種方法來創建一個non-temporary視圖與火花PySparkDataFrame編程嗎?

火花。sql(“創建視圖SELCT…”)不算:winking_face:

我沒有找到一個DataFrame方法這樣做……

1接受解決方案

接受的解決方案

Hubert_Dudek1
尊敬的貢獻者三世

現在我終於明白了:slightly_smiling_face:所以問題是選擇通過PySpark API創建創建視圖。

我們可以看到,在dataframe.pythat所有視圖都臨時:

https://github.com/apache/spark/blob/7d9a4fab7957086a12ba3e9e2856e20566531e3a/python/pyspark/sql/dat..。

這個PySpark API是路由Dataset.scala:

https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/Dataset.sca..。

Dataset.scala我們可以看到應該rebuild-ed條件。它是不允許PersistedView

val viewType =如果其他(全球)GlobalTempView LocalTempView

應該是類似的SparkSqlParser.scala

如果(ctx val viewType =。其他臨時= = null) {PersistedView}如果(ctx)。其他全球! = null) {GlobalTempView} {LocalTempView}

所以:

1)

私人def createTempViewCommandDataset.scala需要額外viewType參數而應該重命名(已經添加了名稱是錯誤的,因全球)

2)比的函數,如createGlobalPersistantCommand等它被添加Dataset.scala

3)比德fcreateGlobalPersistantView等可以被添加到dataframe.py

在火花後X (?:-)這將是可能的。

也許有人想貢獻並創建提交:slightly_smiling_face:

在原帖子查看解決方案

8回答說8

Hubert_Dudek1
尊敬的貢獻者三世

創建表,而不是

MartinB
貢獻者三世

意味著創建一個表數據持久性,不是嗎?

我不希望這樣。

jose_gonzalez
主持人
主持人

嗨@Martin b,

有兩種觀點。臨時視圖會話範圍內,當會話結束了,因為它在底層metastore跳過持久化定義,如果任何。全局臨時視圖綁定到一個係統保存global_temp臨時數據庫。如果你想知道更多關於它,請參考文檔

如果沒有這兩個選項為你工作,然後另一個選擇是創建一個物理表像@Hubert杜德克提及。

謝謝

MartinB
貢獻者三世

嗨@Jose岡薩雷斯,

我認為,有三種觀點:

  • 臨時視圖
    • 創建臨時視圖山姆的SELECT *……
  • 全局臨時視圖
    • 創建全局臨時視圖山姆的SELECT *……
  • NON-TEMPORARY視圖
    • 創建認為山姆SELECT *……

請參閱示例:https://docs.m.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-aux-show-views.htm..。

圖像我想創建一個non-temporary視圖(isTemporary = false)——不是SparkSQL而是PySpark。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map