我可以用sqlContext读取电火花数据格式中的雪花表
sql = f"""select * from table1""";
df = sqlContext.read
.format(SNOWFLAKE_SOURCE_NAME)
.options(**snowflake_options)
.option("query", sql)
.load()我如何在雪花中创建一个临时表(使用吡火花代码)并从这个吡火花数据(df)中插入值?
发布于 2022-04-28 19:32:29
就像往常一样保存,用雪花格式
snowflake_options = {
...
'sfDatabase': 'dbabc',
'dbtable': 'tablexyz',
...
}
(df
.write
.format(SNOWFLAKE_SOURCE_NAME)
.options(**snowflake_options)
.save()
)发布于 2022-07-12 22:05:58
我不相信这是可以做到的。至少不是你想要的方式。
从技术上讲,您可以创建一个临时表;但是坚持它是我很难找到如何做的事情(也就是说,我还没有)。如果运行以下命令:
spark.sparkContext._jvm.net.snowflake.spark.snowflake.Utils.runQuery(snowflake_options, 'create temporary table tmp_table (id int, value text)')您会注意到,它成功地返回了一个java对象,指示已经成功创建了临时表;但是,一旦尝试在它上运行任何进一步的语句,您就会得到一些令人讨厌的错误,这意味着它不再存在。不知怎么的,我们普通人需要找到一种方法,通过jvm api访问和持久化雪花会话。话虽如此,我也认为这将与星火范式背道而驰。
如果你真的需要在雪花上运行转换的特殊情况下的性能提升,而不是把它全部带入星火中,那么首先要保持雪花中的一切
runQuery api创建“临时”永久/瞬态表,并设计雪花查询,直接插入这些表,然后在完成时清理(删除)。https://stackoverflow.com/questions/72035782
复制相似问题