[英]How to delete from a temp view or equivalent in spark sql databricks?
我需要從數據塊的臨時視圖中刪除,但看起來我只能合並 select 並插入。 也許我錯過了一些東西,但我沒有找到任何關於此的文檔。
第 1 步:我在這里創建一個臨時視圖:
table_df = spark.read.format('delta).load("mnt/table_path")
table_df.createOrReplaceTempView("table_name")
第 2 步:然后嘗試刪除:
%sql
delete from table_name
where id in (1,2,3)
得到:
無效命令:'table_name' 是視圖而不是表。; 第 1 行位置 0;
第 3 步:
table_name_delta = DeltaTable.forPath(spark, "mnt/table_path")
last_actions = table_name_delta.history(1).collect()
它適用於合並、select 和插入。 這里有幾個限制:
是否可以從視圖或等效項中刪除? 是否有支持刪除的等效臨時視圖?
Apache spark 不支持刪除操作。 您可以通過在數據框上應用過濾器或使用過濾條件創建另一個臨時表來實現它。
data = spark.createDataFrame([("Alberto", 1),
("Dakota", 2),
("Kumar", 3),
("Siva", 4),
("Sree", 5),
("Kavin", 6)],
["Name", "id"])
data.createOrReplaceTempView("table_name")
在您的 spark SQL 中,您可以使用過濾后的值創建另一個視圖,如下所示:
%sql
CREATE OR REPLACE TEMPORARY VIEW table_name1 AS SELECT id, name FROM table_name WHERE id not in(1, 2);
select * from table_name1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.