#snowflake-cloud-data-platform
#snowflake-cloud-data-platform
Вопрос:
Я только начал использовать snowsql.exe чтобы ВЫВЕСТИ файлы parquet на сцену, и я пытаюсь ускорить работу, но сталкиваюсь с трудностями с производительностью.
Я заметил, что snowsql.exe медленно что-либо делает — просто выполнение «—help» занимает 23 секунды. Я использую powershell для перебора папок и РАЗМЕЩЕНИЯ всех файлов, которые я нахожу на этапе, и удаления при получении ЗАГРУЖЕННОГО сообщения. Однако, учитывая даже 100 файлов, это займет количество файлов, которые мне нужно будет делать ежедневно, это не будет масштабироваться.
Выражение вызова выглядит примерно так:
c:progra~1snowfl~1snowsql.exe --config c:my_config -c my_conn -q "PUT 'file://my/file/name.parquet' @MY.STAGE/path AUTO_COMPRESS = FALSE OVERWRITE = TRUE"
Мои мысли:
- перейдите на python и используйте модуль py для РАЗМЕЩЕНИЯ файлов, надеясь, что это быстрее, чем вызов snowsql.exe .
- измените сценарий powershell, чтобы создать серию инструкций PUT в виде файла, затем используйте «-f» и запустите пакет. Мне нужно будет сделать еще немного синтаксического анализа, чтобы убедиться, что каждый файл был правильно загружен перед удалением, но это не имеет большого значения.
- ???
Любая помощь приветствуется. Написание этого дало мне идеи, но я решил спросить, почему snowsql работает так медленно с самого начала. Спасибо!
Ответ №1:
Snowsql — это самораспаковывающийся двоичный файл, который распаковывается при каждом запуске. Там есть некоторая задержка, и в зависимости от скорости ввода-вывода загрузка может занять несколько секунд.
Вы можете запустить извлеченный snowsql.exe напрямую, чтобы у него не было задержки распаковки каждый раз. Для этого вы можете запустить из :
%USERPROFILE%.snowsql1.2.10snowsql
Где 1.2.10 — это версия, которую вы используете в данный момент.
Обратите внимание, что при запуске таким образом Snowsql не будет проверять наличие обновлений.