Snowpark Python从DataFrame创建临时视图时随机抛出SnowparkCreateViewException求助
Snowpark Python从DataFrame创建临时视图时随机抛出SnowparkCreateViewException求助
大家好,最近我在Snowpark Python里碰到了个特别棘手的随机报错问题,从DataFrame创建临时视图时会毫无规律地抛出异常,网上搜了一圈没找到能彻底解决的方案,来这儿求助各位大佬!
问题详情
- 我有一个包含日期、目录名、文件名的Python嵌套列表,用它生成DataFrame后,再基于这个DataFrame创建或替换临时视图
- 代码是在Snowflake内部的Python工作表中运行的
- 报错完全随机,错误提示如下:
snowflake.snowpark.exceptions.SnowparkCreateViewException: (1203): Your dataframe may include DDL or DML operations. Creating a view from this DataFrame is currently not supported.
- 我猜测这可能和记录数量有关?因为当记录数少于200条时基本都能正常执行,但超过200条就大概率失败,不过这也只是我的推测,不确定是不是巧合
已尝试的解决方法
- 移除了代码中新增额外列的逻辑
- 试过用
df.select("*")复制一份新的DataFrame,再用这个副本创建视图 - 试过在创建视图前先缓存DataFrame
实际运行代码
# 假设列表是在其他流程中生成的 cur_run_files_list.append((date, dir_name, file_name)) tst_vw_nm_fq = "DB_NAME.SCHEMA_NAME.TEST_VIEW" # -------------------------------------------------------------------------------- df_cur_run_files_list = session.create_dataframe( cur_run_files_list, schema=["EXP_DATE", "DIR_NAME", "FILE_NAME"], ) df_cur_run_files_list.create_or_replace_temp_view(tst_vw_nm_fq)
测试代码(间歇性失败,值为测试硬编码)
# 假设列表是在其他流程中生成的 # cur_run_files_list.append((date, dir_name, file_name)) cur_run_files_list = [ ("2024-12-01", "dir_name01", "file_name01.txt"), ("2024-12-01", "dir_name02", "file_name02.txt"), ("2024-12-01", "dir_name03", "file_name03.txt"), ("2024-12-01", "dir_name04", "file_name04.txt"), ("2024-12-01", "dir_name05", "file_name05.txt"), ("2024-12-01", "dir_name06", "file_name06.txt"), ("2024-12-01", "dir_name07", "file_name07.txt"), ("2024-12-01", "dir_name08", "file_name08.txt"), ("2024-12-01", "dir_name09", "file_name09.txt"), ("2024-12-01", "dir_name10", "file_name10.txt"), ] tst_vw_nm_fq = "DB_NAME.SCHEMA_NAME.TEST_VIEW" # -------------------------------------------------------------------------------- df_cur_run_files_list = session.create_dataframe( cur_run_files_list, schema=["EXP_DATE", "DIR_NAME", "FILE_NAME"], ) df_cur_run_files_list.create_or_replace_temp_view(tst_vw_nm_fq) return df_cur_run_files_list # 因为Snowpark需要返回值所以添加了这行
备注:内容来源于stack exchange,提问作者rainingdistros
相关产品推荐
相关产品推荐

