将Spark parquet 文件从Snowflake-S3-Stage上传到Snowflake Table时出错

bpsygsoo  于 2023-11-21  发布在  Apache
关注(0)|答案(1)|浏览(135)

编辑:错误来自Spark的_SUCCESS文件。在SQL查询中只包含parquet文件:pattern = '.*parquet'
原件:
Snowflake可以加载我的多部分Parquet文件吗?我有其他在同一技术堆栈中工作的插入,但它们都使用一个单一的Parquet文件。我想知道数据是否在后台分区或以其他方式变得无法识别Snowflake
下面是我的简化查询

COPY INTO database.schema.table
FROM (
    SELECT $1 
    FROM @database.schema.stage/path_to_parquet
)
file_format = (type = parquet)

字符串
我在尝试将S3中的数据复制到Snowflake表时遇到此错误:

snowflake.connector.errors.ProgrammingError: 100152 (22000): 
Error parsing the parquet file: 
  Invalid: 
    Parquet file size is 0 bytes   
    Row 0 starts at line 0, column


如果有帮助,生成parquet文件的命令如下所示:

spark_dataframe.select("date", "cityid", "prediction")
        .write.mode("overwrite")
        .parquet(predictions_path)


和一个parquet文件的示例(snappy压缩-- snowflake 默认)

_SUCCESS
part-00000-75a71af4-e797-417a-a2f1-1c31cf9dc891-c000.snappy.parquet
part-00001-75a71af4-e797-417a-a2f1-1c31cf9dc891-c000.snappy.parquet
part-00002-75a71af4-e797-417a-a2f1-1c31cf9dc891-c000.snappy.parquet
part-00003-75a71af4-e797-417a-a2f1-1c31cf9dc891-c000.snappy.parquet
part-00004-75a71af4-e797-417a-a2f1-1c31cf9dc891-c000.snappy.parquet

juzqafwq

juzqafwq1#

我在输入这个问题时发现了这个问题。我的parquet文件列表中有_SUCCESS,这是Spark中的一个零大小文件。这个文件导致了Parquet file size is 0错误。
为了解决这个问题,我在查询中添加了pattern = '.*parquet'来忽略该文件,如下所示:

COPY INTO database.schema.table
FROM (
    SELECT $1 
    FROM @database.schema.stage/path_to_parquet
)
file_format = (type = parquet)
pattern = '.*parquet'

字符串

相关问题