全部產品
Search
文件中心

Data Lake Analytics - Deprecated:基於RDS表自動推斷建表

更新時間:Jul 06, 2024

本文介紹如何基於RDS表實現自動推斷建表。

前提條件

為了更加方便地示範操作,您需要先通過以下步驟在RDS中準備好測試資料。
  1. 已建立RDS MySQL執行個體。如何建立,請參見快速建立RDS MySQL執行個體
  2. 已設定IP白名單。如何設定,請參見設定白名單
  3. 已建立帳號和資料庫。如何建立,請參見建立資料庫和帳號
  4. 已通過用戶端、命令列串連RDS MySQL。如何串連,請參見通過用戶端、命令列串連RDS MySQL執行個體
  5. 已建立表並寫入測試資料,具體步驟如下。
    1. 建立person表,語句如下。
      create table person (
      id int,
      name varchar(1023),
      age int
      );
    2. 向person表中插入資料。
      insert into person 
      values 
      (1, 'james', 10), 
      (2, 'bond', 20), 
      (3, 'jack', 30), 
      (4, 'lucy', 40);
  6. 已建立RDS for MySQL Schema。

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

      CREATE SCHEMA hello_mysql_vpc_rds WITH DBPROPERTIES (
        CATALOG = 'mysql', 
        LOCATION = 'jdbc:mysql://rm-2zer0vg58mfofake.mysql.rds.aliyuncs.com:3306/rds_mysql_dbname',
        USER = 'rds_mysqldb_username',
        PASSWORD = 'rds_mysqldb_password',
        INSTANCE_ID = 'rds_mysql_instance_id',
        VPC_ID = 'rds_mysqldb_vpcid'
      );

注意事項

在DLA中建立MySQL、SQL Server、PostgreSQL的Schema之前,需要將IP位址區段100.104.0.0/16加入到RDS的白名單列表中。

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

許可權聲明:當您使用了本文介紹的方法建立MySQL Schema,即視為您同意我們利用VPC反向訪問技術讀寫RDS。

樣本一:通過CREATE TABLE LIKE MAPPING建立表

建立表:

create external table person like mapping('person');
+-------------+-----------+-----------------+
desc person;
+-------------+-----------+-----------------+
| Field       | Type      | Collation       |
+-------------+-----------+-----------------+
| id          | int       | utf8_general_ci |
| age         | int       | utf8_general_ci |
| name        | varchar   | utf8_general_ci |

查詢表資料:

SELECT * FROM hello_mysql_vpc_rds.person
 +------+------+----+
 | id  | name | age |
 +-----+------+-----+
 |    1| james|   10|
 |    2| bond |   20|
 |    3| jack |   30|
 |    4| lucy |   40|

樣本二:通過CREATE TABLE LIKE複製表

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

文法:

create external table_name2 like table_name_1;

樣本:

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

create external table person_2 like person;
+------+-------------------+---+------+
SELECT * FROM hello_mysql_vpc_rds.person_2
 +------+------+----+
 | id  | name | age |
 +-----+------+-----+
 |    1| james|   10|
 |    2| bond |   20|
 |    3| jack |   30|
 |    4| lucy |   40|