问题描述
我想根据 sql 查询的结果创建一个临时视图 - 这听起来像是一件基本的事情,但我无法让它工作,也不明白出了什么问题。
%sql
SELECT
Col1
FROM
Table1
WHERE EXISTS (
select *
from TempView1)
df = spark.sql("""
SELECT
Col1
FROM
Table1
WHERE EXISTS (
select *
from TempView1)""")
好的
df
出[28]:数据帧[Col1:bigint]
df.createOrReplaceTempView("df_tmp_view")
好的
%sql
select * from df_tmp_view
sql 语句错误:AnalysisException:找不到表或视图:df_tmp_view;第 1 行 pos 14; '项目 [*] +- 'UnresolvedRelation [df_tmp_view],[],false
display(affected_customers_tmp_view)
NameError: name 'df_tmp_view' 未定义
我做错了什么? 我不明白该名称未定义的错误,尽管我只是在上面定义了一个命令。此外,sql 查询正在运行并返回数据......那么我错过了什么?
谢谢!
解决方法
您需要获取视图的全局上下文,例如在您的情况下:
public class Car {
String color;
int price;
public static void main(String[] args) {
Car obj = new Car();
obj.color = "Red";
obj.price = 80;
System.out.println(obj.color + " "+ obj.price);
Car obj1 = new Car();
obj1.color = "White";
obj1.price = 70;
System.out.println(obj1.color+" "+obj1.price);
}
}
例如:
global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'df_tmp_view'))