首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在雪花中创建临时表

问如何在雪花中创建临时表
EN

Stack Overflow用户
提问于 2022-04-27 22:01:58
回答 2查看 847关注 0票数 0

我可以用sqlContext读取电火花数据格式中的雪花表

代码语言:javascript
复制
sql = f"""select * from table1""";


 df = sqlContext.read
            .format(SNOWFLAKE_SOURCE_NAME)
            .options(**snowflake_options)
            .option("query", sql)
            .load()

我如何在雪花中创建一个临时表(使用吡火花代码)并从这个吡火花数据(df)中插入值?

EN

回答 2

Stack Overflow用户

发布于 2022-04-28 19:32:29

就像往常一样保存,用雪花格式

代码语言:javascript
复制
snowflake_options = {
    ...
    'sfDatabase': 'dbabc',
    'dbtable': 'tablexyz',
    ...
}
        
(df
    .write
    .format(SNOWFLAKE_SOURCE_NAME)
    .options(**snowflake_options)
    .save()
)
票数 0
EN

Stack Overflow用户

发布于 2022-07-12 22:05:58

我不相信这是可以做到的。至少不是你想要的方式。

从技术上讲,您可以创建一个临时表;但是坚持它是我很难找到如何做的事情(也就是说,我还没有)。如果运行以下命令:

代码语言:javascript
复制
spark.sparkContext._jvm.net.snowflake.spark.snowflake.Utils.runQuery(snowflake_options, 'create temporary table tmp_table (id int, value text)')

您会注意到,它成功地返回了一个java对象,指示已经成功创建了临时表;但是,一旦尝试在它上运行任何进一步的语句,您就会得到一些令人讨厌的错误,这意味着它不再存在。不知怎么的,我们普通人需要找到一种方法,通过jvm api访问和持久化雪花会话。话虽如此,我也认为这将与星火范式背道而驰。

如果你真的需要在雪花上运行转换的特殊情况下的性能提升,而不是把它全部带入星火中,那么首先要保持雪花中的一切

  1. 使用查询中的CTE,或者使用上面描述的runQuery api创建“临时”永久/瞬态表,并设计雪花查询,直接插入这些表,然后在完成时清理(删除)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72035782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档