0.15.0 (2025-12-08)
Удаления
Удален коннектор Teradata. Он больше не используется в нашей компании, и
для него никогда не было надлежащих интеграционных тестов.
Критичные изменения
Добавлены Iceberg(catalog=..., warehouse=...) обязательные опции
(#391,
#393,
#394,
#397,
#399,
#413).
В версии 0.14.0 мы реализовали очень простой коннектор Iceberg, настраиваемый
через словарь:
iceberg = Iceberg(
catalog_name="mycatalog",
extra={
"type": "rest",
"uri": "https://catalog.company.com/rest",
"rest.auth.type": "oauth2",
"token": "jwt_token",
"warehouse": "s3a://mybucket/",
"io-impl": "org.apache.iceberg.aws.s3.S3FileIO",
"s3.endpoint": "http://localhost:9010",
"s3.access-key-id": "access_key",
"s3.secret-access-key": "secret_key",
"s3.path-style-access": "true",
"client.region": "us-east-1",
},
spark=spark,
)
Теперь мы реализовали классы-обертки, позволяющие настраивать различные каталоги Iceberg:
iceberg = Iceberg(
catalog_name="mycatalog",
catalog=Iceberg.RESTCatalog(
url="https://catalog.company.com/rest",
auth=Iceberg.RESTCatalog.BearerAuth(
access_token="jwt_token",
),
),
warehouse=...,
)
iceberg = Iceberg(
catalog_name="mycatalog",
catalog=Iceberg.RESTCatalog(
url="https://catalog.company.com/rest",
auth=Iceberg.RESTCatalog.OAuth2ClientCredentials(
client_id="my_client",
client_secret="my_secret",
oauth2_token_endpoint="http://keycloak.company.com/realms/my-realm/protocol/openid-connect/token",
scopes=["catalog"],
),
),
warehouse=...,
spark=spark,
)
А также набор классов для конфигурирования хранилища:
iceberg = Iceberg(
catalog_name="mycatalog",
catalog=...,
# using Iceberg AWS integration
warehouse=Iceberg.S3Warehouse(
path="/",
bucket="mybucket",
host="localhost",
port=9010,
protocol="http",
path_style_access=True,
access_key="access_key",
secret_key="secret_key",
region="us-east-1",
),
spark=spark,
)
iceberg = Iceberg(
catalog_name="mycatalog",
catalog=...,
# Delegate warehouse config to REST Catalog
warehouse=Iceberg.DelegatedWarehouse(
warehouse="some-warehouse",
access_delegation="vended-credentials",
),
spark=spark,
)
iceberg = Iceberg(
catalog_name="mycatalog",
# store both data and metadata on HadoopFilesystem
catalog=Iceberg.FilesystemCatalog(),
warehouse=Iceberg.FilesystemWarehouse(
path="/some/warehouse",
connection=SparkHDFS(cluster="dwh"),
),
spark=spark,
)
Использование классов вместо словарей обеспечивает автозавершение кода в IDE и позволяет повторно использовать одни и те же параметры подключения к каталогу для нескольких хранилищ данных.
Функции
-
Добавлена поддержка для
Iceberg.WriteOptions(table_properties={})(#401).В частности, теперь можно задать
"location": "/some/warehouse/mytable"для таблицы. -
Добавлена поддержка для
Hive.WriteOptions(table_properties={})(#412).В частности, теперь можно установить параметр
"auto.purge": "true"для таблицы.
Улучшения
-
Разрешена установка
SparkS3(path_style_access=True)вместоSparkS3(extra={"path.style.access": True)(#392).Это изменение улучшает автозавершение кода в IDE и делает более очевидным, что этот параметр важен для функциональности коннектора.
-
Добавлено предупреждение во время запуска о недостающих параметрах
S3(region=...)иSparkS3(region=...)(#418).
Рекомендуется явно передавать этот параметр, чтобы избежать потенциальных ошибок доступа.
Спасибо @yabel
Зависимости
-
Обновлены JDBC коннекторы:
- MySQL
9.4.0→9.5.0 - MSSQL
13.2.0→13.2.1 - Oracle
23.9.0.25.07→23.26.0.0.0 - Postgres
42.7.7→42.7.8
- MySQL
-
Добавлена поддержка
Clickhouse.get_packages(package_version="0.9.3")(#407).Версии в диапазоне 0.8.0-0.9.2 не поддерживаются по следующим причинам: issue #2625.
Версии 0.9.3 и выше по-прежнему не являются версией по умолчанию из-за различных проблем с совместимостью и производительностью. Используйте их на свой страх и риск.
Документация
- Задокументировано использование Greenplum коннектора со Spark
master=k8s