全部產品
Search
文件中心

Data Lake Analytics - Deprecated:基於MongoDB集合自動推斷建表

更新時間:Jul 06, 2024

本文檔主要介紹了基於MongoDB集合自動推斷建表的操作步驟。

前提條件

為了更加方便地示範操作,您需要先通過以下步驟在MongoDB中準備好測試資料。

  1. 建立執行個體

    說明

    DLA和MongoDB所屬地區必須相同,否則無法進行本文檔的操作。由於DLA將通過VPC網路連接MongoDB資料庫,建議您建立MongoDB執行個體時,網路類型選擇VPC。同時,MongoDB支援將傳統網路切換為VPC網路。

  2. 設定白名單

    說明

    在DLA中建立MongoDB Schema之前,需要將IP位址區段100.104.0.0/16加入到MongoDB白名單列表中。

  3. 串連執行個體

  4. 寫入測試資料。

    本樣本在MongoDB執行個體的mongo_test資料庫中建立person集合,集合測試資料如下所示:

     db.person.insert({id:1, name: "james", age: 10, create_time: new Date()});
     db.person.insert({id:2, name: "bond", age: 20, create_time: new Date()});
     db.person.insert({id:3, name: "lily", age: 30, create_time: new Date()});
     db.person.insert({id:4, name: "lucy", age: 20, create_time: new Date()});
  5. 建立MongoDB Schema。

    本文樣本中所有資料表使用以下MongoDB Schema。

      CREATE DATABASE mongo_test WITH DBPROPERTIES (
          catalog = 'mongodb',
          location = 'mongodb://<your-user-name>:<your-password>@dds-bp1694axxxxxxxx.mongodb.rds.aliyuncs.com:3717,dds-bp1694ayyyyyyyy.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=zzzzz',
          database = 'mongo_test',
          instance_id = 'mongodb_instance_id',
          vpc_id = 'vpc-*******'
      );

    上述樣本的參數說明如下:

    參數名稱

    參數描述

    location

    MongoDB執行個體的ConnectionStringURI。

    database

    MonoDB資料庫名字。

    instance_id

    MongoDB執行個體ID。

    vpc_id

    MongoDB執行個體所屬VPC ID。

注意事項

如果您的MongoDB執行個體位於VPC網路內,預設情況下DLA無法訪問該VPC網路中的資源。為了讓DLA能訪問MongoDB,需要利用VPC反向訪問技術,即在MongoDB白名單中添加100.104.0.0/16IP位址區段。

說明

當您在MongoDB白名單中添加了100.104.0.0/16 IP位址區段,即視為您同意我們利用VPC反向訪問技術讀寫MongoDB資料庫。

操作步驟

您可以通過以下兩種方式在DLA中自動對應MongoDB資料庫中的表資料。

  • 通過CREATE TABLE LIKE MAPPING建立表。

    1. 在DLA中建立表。

      create external table person like mapping('person');
      +-------------+-----------+-----------------+
      desc person;
      +-------------+-----------+-----------------+
      | Field       | Type      | Collation       |
      +-------------+-----------+-----------------+
      | age         | double    | utf8_general_ci |
      | create_time | timestamp | utf8_general_ci |
      | id          | double    | utf8_general_ci |
      | name        | varchar   | utf8_general_ci |
    2. 在DLA中查詢表資料。

      select * from person limit 4;
      +------+-------------------+---+------+
      | age  | create_time       | id| name |
      +------+-----------------------+------+
      | 10 | 2019-04-19 18:03:03 | 1 | james|
      | 20 | 2019-04-19 18:03:04 | 2 | bond |
      | 30 | 2019-04-19 18:03:04 | 3 | lily |
      | 20 | 2019-04-19 18:03:05 | 4 | lucy |
  • 通過CREATE TABLE LIKE複製表。

    傳統資料庫支援將一個表複製一份產生一張新表,DLA中通過CREATE TABLE LIKE可以實現同樣的功能。

    1. 在DLA中複製表。

      person表為例,通過CREATE TABLE LIKE複製一份與person表結構、資料相同的表person_2

      create external table person_2 like person;
    2. 在DLA中查詢表資料。

      select * from person_2 limit 4;
      +------+-------------------+---+------+
      | age  | create_time       | id| name |
      +------+-----------------------+------+
      | 10 | 2019-04-19 18:03:03 | 1 | james|
      | 20 | 2019-04-19 18:03:04 | 2 | bond |
      | 30 | 2019-04-19 18:03:04 | 3 | lily |
      | 20 | 2019-04-19 18:03:05 | 4 | lucy |