存储
Dell ECS
登录后可跨设备保存划线和私人笔记登录
Iceberg Dell 集成
Dell ECS 集成
从 0.15.0 开始,Iceberg 可以通过 ECS catalog 与 Dell 的企业级对象存储(ECS)配合使用。
有关 Dell ECS 的更多信息,请参阅 Dell ECS。
参数
在 Iceberg 中使用 Dell ECS 时,需要以下配置参数:
| 名称 | 说明 |
|---|---|
| ecs.s3.endpoint | ECS S3 服务端点 |
| ecs.s3.access-key-id | ECS 用户名 |
| ecs.s3.secret-access-key | S3 密钥 |
| warehouse | 数据和元数据的位置 |
warehouse 应使用以下格式:
| 示例 | 说明 |
|---|---|
| ecs://bucket-a | 将整个存储桶用作数据 |
| ecs://bucket-a/ | 将整个存储桶用作数据。末尾的 / 会被忽略。 |
| ecs://bucket-a/namespace-a | 使用前缀仅访问该特定命名空间中的数据 |
Iceberg 的 runtime jar 支持不同版本的 Spark 和 Flink,请选择正确的版本。
尽管 Dell ECS 客户端 jar 向后兼容,Dell EMC 仍建议使用最新版本的客户端。
Spark
要在 Spark 3.5.0 中使用 Dell ECS catalog,应按如下方式创建 Spark 会话:
ICEBERG_VERSION=1.4.2
SPARK_VERSION=3.5_2.12
ECS_CLIENT_VERSION=3.3.2
DEPENDENCIES="org.apache.iceberg:iceberg-spark-runtime-${SPARK_VERSION}:${ICEBERG_VERSION},\
org.apache.iceberg:iceberg-dell:${ICEBERG_VERSION},\
com.emc.ecs:object-client-bundle:${ECS_CLIENT_VERSION}"
spark-sql --packages ${DEPENDENCIES} \
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.my_catalog.warehouse=ecs://bucket-a/namespace-a \
--conf spark.sql.catalog.my_catalog.catalog-impl=org.apache.iceberg.dell.ecs.EcsCatalog \
--conf spark.sql.catalog.my_catalog.ecs.s3.endpoint=http://10.x.x.x:9020 \
--conf spark.sql.catalog.my_catalog.ecs.s3.access-key-id=<Your-ecs-s3-access-key> \
--conf spark.sql.catalog.my_catalog.ecs.s3.secret-access-key=<Your-ecs-s3-secret-access-key>然后,使用 my_catalog 访问 ECS 中的数据。你可以使用 SHOW NAMESPACES IN my_catalog 和 SHOW TABLES IN my_catalog 来获取该 catalog 的命名空间和表。
关于 catalog 使用的相关问题:
SparkSession.catalog在 Python 和 Scala 中都无法访问 Spark 的第三方 catalog,因此请使用 DDL SQL 来列出所有表和命名空间。
Flink
要在 Flink 中使用 Dell ECS catalog,你首先必须创建一个 Flink 环境。
# HADOOP_HOME is your hadoop root directory after unpack the binary package.
export HADOOP_CLASSPATH=`$HADOOP_HOME/bin/hadoop classpath`
# download Iceberg dependency
MAVEN_URL=https://repo1.maven.org/maven2
ICEBERG_VERSION=0.15.0
FLINK_VERSION=1.14
wget ${MAVEN_URL}/org/apache/iceberg/iceberg-flink-runtime-${FLINK_VERSION}/${ICEBERG_VERSION}/iceberg-flink-runtime-${FLINK_VERSION}-${ICEBERG_VERSION}.jar
wget ${MAVEN_URL}/org/apache/iceberg/iceberg-dell/${ICEBERG_VERSION}/iceberg-dell-${ICEBERG_VERSION}.jar
# download ECS object client
ECS_CLIENT_VERSION=3.3.2
wget ${MAVEN_URL}/com/emc/ecs/object-client-bundle/${ECS_CLIENT_VERSION}/object-client-bundle-${ECS_CLIENT_VERSION}.jar
# open the SQL client.
/path/to/bin/sql-client.sh embedded \
-j iceberg-flink-runtime-${FLINK_VERSION}-${ICEBERG_VERSION}.jar \
-j iceberg-dell-${ICEBERG_VERSION}.jar \
-j object-client-bundle-${ECS_CLIENT_VERSION}.jar \
shell然后,使用 Flink SQL 创建一个名为 my_catalog 的 catalog:
CREATE CATALOG my_catalog WITH (
'type'='iceberg',
'warehouse' = 'ecs://bucket-a/namespace-a',
'catalog-impl'='org.apache.iceberg.dell.ecs.EcsCatalog',
'ecs.s3.endpoint' = 'http://10.x.x.x:9020',
'ecs.s3.access-key-id' = '<Your-ecs-s3-access-key>',
'ecs.s3.secret-access-key' = '<Your-ecs-s3-secret-access-key>');然后,你可以运行 USE CATALOG my_catalog、SHOW DATABASES 和 SHOW TABLES 来获取该目录的命名空间和表。
限制
当仅将该目录与 Dell ECS 配合使用时,需要注意以下限制:
RENAME语句在没有其他保护机制的情况下也受支持。当你尝试重命名表时,需要确保原表上的所有提交均已完成。RENAME语句仅重命名表,而不会移动任何数据文件。这可能导致表的数据存储在配置的仓库路径之外的路径中。- 表提交所使用的 CAS 操作基于对象的校验和(checksum)。校验和发生冲突的概率非常小。
评论
登录后参与评论
正在加载评论…
KnowForge