将 SQL 查询的结果写入 Databricks 中的临时视图
Writing results of SQL query to Temp View in Databricks
我想根据 SQL 查询的结果创建一个临时视图 - 这听起来像是一件基本的事情,但我无法让它工作并且不明白这是什么错了。
这是我的 SQL 查询 - 工作正常 returns Col1.
%sql
SELECT
Col1
FROM
Table1
WHERE EXISTS (
select *
from TempView1)
我想把结果写在另一个我可以查询的table中。因此我这样做:
df = spark.sql("""
SELECT
Col1
FROM
Table1
WHERE EXISTS (
select *
from TempView1)""")
好的
df
输出[28]: DataFrame[Col1: bigint]
df.createOrReplaceTempView("df_tmp_view")
好的
%sql
select * from df_tmp_view
SQL 语句中的错误:AnalysisException:Table 或未找到视图:df_tmp_view;第 1 行位置 14;
'项目 [*]
+- 'UnresolvedRelation [df_tmp_view], [], false
display(affected_customers_tmp_view)
NameError: 名称 'df_tmp_view' 未定义
我做错了什么?
我不明白该名称未定义的错误,尽管我只在上面的一个命令中定义了它。此外,SQL 查询正在运行并返回数据...所以我错过了什么?
谢谢!
您需要获取视图的全局上下文,例如您的情况:
global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'df_tmp_view'))
例如:
df_pd = pd.DataFrame(
{
'Name' : [231232,12312321,3213231],
}
)
df = spark.createDataFrame(df_pd)
df.createOrReplaceGlobalTempView('test_tmp_view')
global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'test_tmp_view'))
我想根据 SQL 查询的结果创建一个临时视图 - 这听起来像是一件基本的事情,但我无法让它工作并且不明白这是什么错了。
这是我的 SQL 查询 - 工作正常 returns Col1.
%sql
SELECT
Col1
FROM
Table1
WHERE EXISTS (
select *
from TempView1)
我想把结果写在另一个我可以查询的table中。因此我这样做:
df = spark.sql("""
SELECT
Col1
FROM
Table1
WHERE EXISTS (
select *
from TempView1)""")
好的
df
输出[28]: DataFrame[Col1: bigint]
df.createOrReplaceTempView("df_tmp_view")
好的
%sql
select * from df_tmp_view
SQL 语句中的错误:AnalysisException:Table 或未找到视图:df_tmp_view;第 1 行位置 14; '项目 [*] +- 'UnresolvedRelation [df_tmp_view], [], false
display(affected_customers_tmp_view)
NameError: 名称 'df_tmp_view' 未定义
我做错了什么? 我不明白该名称未定义的错误,尽管我只在上面的一个命令中定义了它。此外,SQL 查询正在运行并返回数据...所以我错过了什么?
谢谢!
您需要获取视图的全局上下文,例如您的情况:
global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'df_tmp_view'))
例如:
df_pd = pd.DataFrame(
{
'Name' : [231232,12312321,3213231],
}
)
df = spark.createDataFrame(df_pd)
df.createOrReplaceGlobalTempView('test_tmp_view')
global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'test_tmp_view'))