Я пытаюсь свалить стол со снежинками на паркет.
перечитывание файла паркета изнутри снежинки работает, но при чтении его с помощью других инструментов (Pandas, Pyarrow,...) я получаю ошибку о формате
код для воспроизведения:
from snowflake.snowpark import Session
from snowflake.snowpark import functions as F
import os
from snowflake.ml.fileset import sfcfs
import pandas
connection_parameters = {} # this is setup specific
snowpark_session = Session.builder.configs(connection_parameters).create()
df = snowpark_session.createDataFrame(pandas.DataFrame({'a': [1,2,3]}))
full_name = f'{snowpark_session.get_session_stage()}/report1'
df.write.parquet(full_name, header=True, overwrite=True)
# this works
snowpark_session.read.parquet(full_name)
# this fails
fs = sfcfs.SFFileSystem(snowpark_session=snowpark_session)
file_name = fs.ls(snowpark_session.get_session_stage())[0]
pandas.read_parquet(fs.open(file_name))
сообщение об ошибке, которое я получаю:
ArrowInvalid: не удалось открыть источник входных данных Parquet '': Parquet магические байты не найдены в нижнем колонтитуле. Либо файл поврежден, либо это это не паркетный файл.
проблема, похоже, связана с объектом файловой системы снежинки - есть альтернатива API, которая работает:
pandas.read_parquet(snowpark_session.file.get_stream(file_name))
Отключить сжатие можно, но файл почему-то все равно не читается