目录(Catalog)
JDBC
登录后可跨设备保存划线和私人笔记登录
Iceberg JDBC 集成
JDBC Catalog
Iceberg 支持通过 JDBC 使用关系数据库中的表来管理 Iceberg 表。JDBC 所连接的数据库必须支持原子事务,以便 JDBC Catalog 实现能够正确支持 Iceberg 表的原子提交以及可串行化隔离级别。
配置项
由于每个数据库及其服务提供商可能需要不同的配置,JDBC Catalog 允许通过以下方式传入任意配置:
| 属性 | 默认值 | 说明 |
|---|---|---|
| uri | JDBC 连接字符串 | |
| jdbc.<property_key> | 用于配置 JDBC 连接的任意键值对 |
示例
Spark
你可以使用以下配置,通过 MySQL JDBC 连接启动一个 Spark 会话:
spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.11.0 \
--conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.my_catalog.warehouse=s3://my-bucket/my/key/prefix \
--conf spark.sql.catalog.my_catalog.type=jdbc \
--conf spark.sql.catalog.my_catalog.uri=jdbc:mysql://test.1234567890.us-west-2.rds.amazonaws.com:3306/default \
--conf spark.sql.catalog.my_catalog.jdbc.verifyServerCertificate=true \
--conf spark.sql.catalog.my_catalog.jdbc.useSSL=true \
--conf spark.sql.catalog.my_catalog.jdbc.user=admin \
--conf spark.sql.catalog.my_catalog.jdbc.password=passJava API
Class.forName("com.mysql.cj.jdbc.Driver"); // ensure JDBC driver is at runtime classpath
Map<String, String> properties = new HashMap<>();
properties.put(CatalogProperties.CATALOG_IMPL, JdbcCatalog.class.getName());
properties.put(CatalogProperties.URI, "jdbc:mysql://localhost:3306/test");
properties.put(JdbcCatalog.PROPERTY_PREFIX + "user", "admin");
properties.put(JdbcCatalog.PROPERTY_PREFIX + "password", "pass");
properties.put(CatalogProperties.WAREHOUSE_LOCATION, "s3://warehouse/path");
Configuration hadoopConf = new Configuration(); // configs if you use HadoopFileIO
JdbcCatalog catalog = CatalogUtil.buildIcebergCatalog("test_jdbc_catalog", properties, hadoopConf);评论
登录后参与评论
正在加载评论…
KnowForge