【问题标题】:Use Snowpark python to unload snowflake data to S3. How to provide storage integration option使用 Snowpark python 将雪花数据卸载到 S3。如何提供存储集成选项
【发布时间】:2022-12-10 10:35:37
【问题描述】:

我正在尝试将雪花数据卸载到 S3,我有相同的存储集成设置。我可以使用 SQL 查询卸载,但想使用 snowpark python 来卸载。

DataFrameWriter.copy_into_location - 这个 snowpark 方法没有任何 storage_integration 参数,这让我对如何使用 snowpark 完成这个卸载工作一无所知!

对此的任何帮助将不胜感激!

尝试使用现有的 copy_into_location 方法,使用 storage_integration='SI_NAME',内部 SQL 查询抛出错误 -

Invalid value ''SI_NAME'' for property 'STORAGE_INTEGRATION'. String literal identifier is unsupported for this property. Please use an unquoted or double-quoted identifier.

【问题讨论】:

    标签: python amazon-s3 snowflake-cloud-data-platform snowpark


    【解决方案1】:

    没错,DataFrameWriter.copy_into_location 没有存储集成参数。

    您可以使用存储集成创建指向 S3 位置的外部阶段对象。

      create stage my_stage_s3
      storage_integration = my_storage_int
      url = 's3://mybucket/encrypted_files/'
      file_format = my_format;
    

    然后,在您的copy_into_location 电话中,您将位置指定为"@my_stage_s3/"

    【讨论】:

    • 成功了,谢谢!另一个快速问题,我在阶段创建期间提供了参数“FILE_FORMAT=(TYPE=PARQUET)”,还在我的 copy_into_location 方法调用中提供了“file_format_type="parquet"",但是卸载到 S3 的文件没有任何扩展名,只是名称“数据”。关于为什么仍然没有延期的任何想法。当我使用 SQL“复制到”运行时,它很好(扩展名为 .snappy.parquet)
    • 奇怪,我无法重现这个问题。我的命令如下:copy_result = df.write.copy_into_location("@my_stage_s3/data", file_format_type="parquet", header=True, overwrite=True) 结果:data_0_0_0.snappy.parquet
    • 有点奇怪。除非我通过 df.write.copy_into_location("@my_stage_s3/data_test.snappy.parquet", file_format_type="parquet", header=True, overwrite=True, single=True, MAX_FILE_SIZE=200 * 1024 * 1024) 提供扩展,否则创建一个没有任何扩展名的文件。无论如何感谢您的快速回复。
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2021-12-24
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多