Вопрос или проблема
Существует ли библиотека, которую я могу использовать для написания высокомасштабируемых производственных дельта-журналов для ADLS?
Я ищу библиотеку, которая реализует эту спецификацию.
Я знаю, что есть библиотека на Java, io.delta:delta-kernel-api, которая ее реализует, но я хотел бы избежать внедрения другой технологии в мой проект. Чтобы использовать ее, мне придется расширить функциональность Java, так как она готова к потреблению в качестве процесса.
Я также знаю, что есть пакет delta-kernel-r, но он, похоже, не готов к производственному использованию.
Ответ или решение
Для записи Delta Parquet в среде .NET, вам стоит обратить внимание на несколько библиотек и решений, которые могут помочь вам в этом процессе, несмотря на существующие ограничения и потребности, описанные в вашем вопросе.
Delta Lake и .NET
На данный момент не существует полнофункциональной и зрело разработанной библиотеки для работы с Delta Lake непосредственно в .NET. Как вы упомянули, библиотека io.delta:delta-kernel-api
, написанная на Java, является одним из наиболее распространенных решений, когда дело доходит до работы с Delta файлми. Однако, использование Java-кода в проекте .NET может создать дополнительные сложности и потребовать дополнительных интеграций.
Альтернативные решения:
-
ZetaSQL и другие межъязычные решения:
Некоторые команды обращаются к использованию ZetaSQL или других библиотек, которые могут обращаться к Delta Lake с использованием SQL-запросов. Это метод позволяет делать запросы к данным через API REST или другую прослойку, которая может синхронизироваться с вашей C# логикой. -
Apache Arrow и Parquet:
Можно рассмотреть использование Apache Arrow или Parquet напрямую, что даст возможность создавать и читать файлы Parquet. Оба формата поддерживаются в экосистеме .NET через библиотеки, такие какParquet.Net
. Однако, это не обеспечит полную функциональность Delta Lake, такую как управление версиями и журналы транзакций. -
Использование других языков программирования:
Если ваши требования к производительности и возможностям Delta являются критичными, возможно, вам стоит рассмотреть написание собственных компонент на Java или Scala, которые затем будут работать как микросервисы и взаимодействовать с вашим .NET приложением через API или сообщение (message queue). -
Delta Lake через Spark:
Если в вашей архитектуре допустимо использование Apache Spark, вы можете использовать PySpark или Scala для работы с Delta Lake. Это также позволит вам писать данные в Delta формат и использовать мощные функции обработки данных, доступные в Spark.
Заключение
Выбор подходящего решения для работы с Delta Lake в .NET зависит от ваших конкретных нужд и архитектуры проектирования. Если вам нужно писать напрямую в Delta форматы и вы предпочитаете не интегрировать Java-код, возможно, стоит пересмотреть архитектуру вашего решения или воспользоваться альтернативными методами работы с данными. Важно помнить о том, что использование межъязычных взаимодействий может потребовать дополнительных усилий, однако, это может быть полезным в долгосрочной перспективе для обеспечения масштабируемости и надежности вашего проекта.
Рекомендуемые действия
- Проанализируйте потребности вашего проекта и определите допустимые компромиссы.
- Исследуйте возможности интеграции других языков, если это уместно.
- Тестируйте предложенные решения в контексте ваших требований к производительности и функциональности.
Эта информация может помочь вам сориентироваться в вопросе выбора библиотеки для работы с Delta Parquet в .NET.