阿里云 Data Lake Formation(DLF) 是阿里云上的统一元数据管理服务。兼容 Hive Metastore 协议。

什么是 Data Lake Formation

因此我们也可以和访问 Hive Metastore 一样,连接并访问 DLF。

连接 DLF

创建 DLF Catalog

  1. CREATE CATALOG dlf PROPERTIES (
  2. "type"="hms",
  3. "hive.metastore.type" = "dlf",
  4. "dlf.proxy.mode" = "DLF_ONLY",
  5. "dlf.endpoint" = "datalake-vpc.cn-beijing.aliyuncs.com",
  6. "dlf.region" = "cn-beijing",
  7. "dlf.uid" = "uid",
  8. "dlf.catalog.id" = "catalog_id", //可选
  9. "dlf.access_key" = "ak",
  10. "dlf.secret_key" = "sk"
  11. );

其中 type 固定为 hms。如果需要公网访问阿里云对象存储的数据,可以设置 "dlf.access.public"="true"

其他配置项为固定值,无需改动。

之后,可以像正常的 Hive MetaStore 一样,访问 DLF 下的元数据。

同 Hive Catalog 一样,支持访问 DLF 中的 Hive/Iceberg/Hudi 的元数据信息。

使用开启了 HDFS 服务的 OSS 存储数据

  1. 确认 OSS 开启了 HDFS 服务。开通并授权访问 OSS-HDFS 服务

  2. 下载 SDK。JindoData SDK 下载。如果集群上已有 SDK 目录,忽略这一步。

  3. 解压下载后的 jindosdk.tar.gz 或者在集群上找到 Jindo SDK 的目录,将其 lib 目录下的jindo-core.jar、jindo-sdk.jar放到${DORIS_HOME}/fe/lib${DORIS_HOME}/be/lib/java_extensions/preload-extensions目录下。

  4. 创建 DLF Catalog,并配置oss.hdfs.enabledtrue

    1. CREATE CATALOG dlf_oss_hdfs PROPERTIES (
    2. "type"="hms",
    3. "hive.metastore.type" = "dlf",
    4. "dlf.proxy.mode" = "DLF_ONLY",
    5. "dlf.endpoint" = "datalake-vpc.cn-beijing.aliyuncs.com",
    6. "dlf.region" = "cn-beijing",
    7. "dlf.uid" = "uid",
    8. "dlf.catalog.id" = "catalog_id", //可选
    9. "dlf.access_key" = "ak",
    10. "dlf.secret_key" = "sk",
    11. "oss.hdfs.enabled" = "true"
    12. );
  5. 当 Jindo SDK 版本与 EMR 集群上所用的版本不一致时,会出现Plugin not found的问题,需更换到对应版本。

访问 DLF Iceberg 表

  1. CREATE CATALOG dlf_iceberg PROPERTIES (
  2. "type"="iceberg",
  3. "iceberg.catalog.type" = "dlf",
  4. "dlf.proxy.mode" = "DLF_ONLY",
  5. "dlf.endpoint" = "datalake-vpc.cn-beijing.aliyuncs.com",
  6. "dlf.region" = "cn-beijing",
  7. "dlf.uid" = "uid",
  8. "dlf.catalog.id" = "catalog_id", //可选
  9. "dlf.access_key" = "ak",
  10. "dlf.secret_key" = "sk"
  11. );

列类型映射

和 Hive Catalog 一致,可参阅 Hive Catalog列类型映射 一节。