SuperAPI AI 工具集

oleander-iceberg-catalog

写作与研究

查看项目

更新于 10-16 06:22

技能介绍

用途:在 Spark 作业中读写 oleander Iceberg 目录时使用本技能,明确表寻址、写入方式与命名规范。

目录层级:表地址格式为 catalog.namespace.table。catalog 固定为 oleander(由 Lakekeeper 托管);namespace 是逻辑分组(如 default、san_francisco、my_org);table 为表名。默认提供 default 与 telemetry 两个命名空间,telemetry 含 oleander 托管数据,可直接查询,如 oleander.telemetry.run_events、oleander.telemetry.traces、oleander.telemetry.logs。示例:oleander.default.sf_311、oleander.san_francisco.district_stats、oleander.my_namespace.results。

读取:使用 spark.table() 传入完整限定名,如 df = spark.table("oleander.default.sf_311")。不要用原始 S3 URI 构造表路径,应始终使用 catalog 名称,以正确跟踪 Iceberg 元数据与血缘。

写入:追加用 df.writeTo("oleander.my_namespace.my_table").append();覆盖用 df.write.mode("overwrite").saveAsTable("oleander.my_namespace.my_table")。增量管道用 writeTo(...).append(),每次替换完整结果集时用 write.mode("overwrite").saveAsTable(...)。应优先使用 Spark 写入,避免 collect 到驱动端再从 Python 内存写入,保持为 Spark DataFrame 操作以便 Iceberg 处理事务、分区和元数据。例如 df.write.mode("overwrite").saveAsTable("oleander.my_namespace.my_table")。

可参数化表名:通过参数或环境变量传入表名以复用脚本,示例使用 argparse 定义 --input-table 与 --output-catalog。

命名空间约定:命名空间和表名用小写、下划线分隔;命名空间应绑定域或数据源而非作业名;避免过深嵌套,一级通常足够。

缓存:读一次并用于多个下游转换的表应缓存一次并最终 unpersist,仅用一次的表不要缓存。

限制:资料未提供具体平台版本、权限、性能或收费信息。