久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

基于DataLakeAnalytics 的數據湖實踐是怎樣的

164次閱讀
沒有評論

共計 7526 個字符,預計需要花費 19 分鐘才能閱讀完成。

基于 DataLakeAnalytics 的數據湖實踐是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

開通 DLA

在開始之前我們要有一個 DLA 的賬號,目前 DLA 正在公測,直接申請試用就好了。試用審批成功之后,你會獲得一個用戶名和密碼, 然后在控制臺登錄就可以使用:

或者如果你是極客,更偏愛命令行,你也可以使用普通的 MySQL 客戶端就可以連接 DLA 了:

mysql -hservice.cn-shanghai.datalakeanalytics.aliyuncs.com 
 -P10000 
 -u your-user-name  
 -p your-password

在這篇文章里面,我會使用 MySQL 命令行給大家演示 DLA 的功能。

另外你還需要在您的 OSS 上準備一些測試數據, 我這里準備的是著名的 TPCH 測試數據集。

用 DLA 分析 OSS 上的數據

DLA 是一個以 SQL 作為查詢語言的數據湖引擎,為了能夠讓 DLA 能夠對 OSS 上的數據進行查詢,我們需要以某種方式告訴 DLA 我們 OSS 數據的結構。為了讓用戶使用更方便,DLA 使用了傳統的 數據庫, 表 的概念來維護這些數據的元信息,也就說,OSS 的文件結構的數據映射到 DLA 變成了一個數據庫和一堆表。

以 TPCH 數據集來舉個例子,我們知道 TPCH 數據集里面包含了如下幾塊信息: 用戶 (customer), 訂單 (orders), 訂單的詳情 (lineitem) 等等,這些數據整體屬于一塊業務,我們建立一個數據庫來對應:

CREATE SCHEMA oss_tpch with DBPROPERTIES(
 CATALOG =  oss ,
 LOCATION =  oss://public-datasets-cn-hangzhou/tpch/1x/  
);

這每塊數據對應到 OSS 上一個目錄的多個文件,拿 訂單 來說,它對應的是 orders_text 目錄下面的 1 個文件 (這個例子里面只有一個文件,實際使用中,這里可以有多個文件):

我們把這個 orders_text 目錄映射到我們的數據庫 oss_tpch 下面的一張表:

use oss_tpch;
CREATE EXTERNAL TABLE IF NOT EXISTS orders (
 O_ORDERKEY INT, 
 O_CUSTKEY INT, 
 O_ORDERSTATUS STRING, 
 O_TOTALPRICE DOUBLE, 
 O_ORDERDATE DATE, 
 O_ORDERPRIORITY STRING, 
 O_CLERK STRING, 
 O_SHIPPRIORITY INT, 
 O_COMMENT STRING
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY  |  
STORED AS TEXTFILE 
LOCATION  oss://public-datasets-cn-hangzhou/tpch/1x/orders_text/

這樣我們就可以通過 DLA 對 OSS 上的進行數據分析了, 比如我們先來查個前十條看看:

mysql  select * from orders limit 10;
+------------+-----------+---------------+--------------+-------------+-----------------+-----------------+----------------+---------------------------------------------------------------------------+
| o_orderkey | o_custkey | o_orderstatus | o_totalprice | o_orderdate | o_orderpriority | o_clerk | o_shippriority | o_comment |
+------------+-----------+---------------+--------------+-------------+-----------------+-----------------+----------------+---------------------------------------------------------------------------+
| 1 | 3689999 | O | 224560.83 | 1996-01-02 | 5-LOW | Clerk#000095055 | 0 | nstructions sleep furiously among |
| 2 | 7800163 | O | 75388.65 | 1996-12-01 | 1-URGENT | Clerk#000087916 | 0 | foxes. pending accounts at the pending, silent asymptot |
| 3 | 12331391 | F | 255287.36 | 1993-10-14 | 5-LOW | Clerk#000095426 | 0 | sly final accounts boost. carefully regular ideas cajole carefully. depos |
| 4 | 13677602 | O | 43119.84 | 1995-10-11 | 5-LOW | Clerk#000012340 | 0 | sits. slyly regular warthogs cajole. regular, regular theodolites acro |
| 5 | 4448479 | F | 125809.76 | 1994-07-30 | 5-LOW | Clerk#000092480 | 0 | quickly. bold deposits sleep slyly. packages use slyly |
| 6 | 5562202 | F | 56408.2 | 1992-02-21 | 4-NOT SPECIFIED | Clerk#000005798 | 0 | ggle. special, final requests are against the furiously specia |
| 7 | 3913430 | O | 240358.24 | 1996-01-10 | 2-HIGH | Clerk#000046961 | 0 | ly special requests |
| 32 | 13005694 | O | 136666.23 | 1995-07-16 | 2-HIGH | Clerk#000061561 | 0 | ise blithely bold, regular requests. quickly unusual dep |
| 33 | 6695788 | F | 183460.23 | 1993-10-27 | 3-MEDIUM | Clerk#000040860 | 0 | uriously. furiously final request |
| 34 | 6100004 | O | 52842.63 | 1998-07-21 | 3-MEDIUM | Clerk#000022278 | 0 | ly final packages. fluffily final deposits wake blithely ideas. spe |
+------------+-----------+---------------+--------------+-------------+-----------------+-----------------+----------------+---------------------------------------------------------------------------+
10 rows in set (0.21 sec)

我們再來看看用戶 36901 的前十條訂單:

mysql  select * from orders where o_custkey=  36901  limit 10;
+------------+-----------+---------------+--------------+-------------+-----------------+-----------------+----------------+------------------------------------------------------------------+
| o_orderkey | o_custkey | o_orderstatus | o_totalprice | o_orderdate | o_orderpriority | o_clerk | o_shippriority | o_comment |
+------------+-----------+---------------+--------------+-------------+-----------------+-----------------+----------------+------------------------------------------------------------------+
| 1243264 | 36901 | F | 103833.45 | 1992-03-23 | 2-HIGH | Clerk#000000922 | 0 | nts haggle. even, even theodolites are. blithely |
| 1274530 | 36901 | O | 181977.58 | 1997-04-29 | 2-HIGH | Clerk#000000232 | 0 | bold foxes along the carefully expres |
| 1599527 | 36901 | F | 322352.11 | 1993-10-16 | 2-HIGH | Clerk#000000674 | 0 | the slyly even dependencies. |
| 1837477 | 36901 | F | 101653.62 | 1993-05-27 | 5-LOW | Clerk#000000891 | 0 | lyly special requests. express foxes sleep fu |
| 1994082 | 36901 | O | 77952.78 | 1995-07-05 | 3-MEDIUM | Clerk#000000525 | 0 | luffily ironic courts. bold, e |
| 2224802 | 36901 | F | 243852.76 | 1993-01-14 | 1-URGENT | Clerk#000000827 | 0 | sly final requests. pending, regular ideas among the furiously u |
| 4957636 | 36901 | F | 5741.32 | 1992-05-20 | 5-LOW | Clerk#000000230 | 0 | ackages. fluffily even packages solve carefully dolphins. unusua |
| 5078467 | 36901 | F | 119823.03 | 1994-04-29 | 4-NOT SPECIFIED | Clerk#000000402 | 0 | regular asymptotes cajo |
| 5173859 | 36901 | F | 103624.02 | 1994-05-28 | 3-MEDIUM | Clerk#000000335 | 0 | regular dependencies poach quickly. unusu |
| 5525574 | 36901 | O | 136098.0 | 1998-02-16 | 4-NOT SPECIFIED | Clerk#000000425 | 0 | cial pinto beans wake. slyly even warthogs use. bo |
+------------+-----------+---------------+--------------+-------------+-----------------+-----------------+----------------+------------------------------------------------------------------+
10 rows in set (1.07 sec)

再來查一查訂單量最多的前是個人:

mysql  select o_custkey, count(*) as cnt from orders group by o_custkey order by cnt desc limit 10;
+-----------+------+
| o_custkey | cnt |
+-----------+------+
| 3451 | 41 |
| 102022 | 41 |
| 102004 | 41 |
| 79300 | 40 |
| 117082 | 40 |
| 122623 | 40 |
| 69682 | 39 |
| 143500 | 39 |
| 142450 | 38 |
| 53302 | 38 |
+-----------+------+
10 rows in set (2.69 sec)

恩,這些人就是我們要重點服務好的客戶啊,我們要把這些用戶的 ID 回寫到前臺的 RDS 數據庫里面讓我們的營銷同學做一些針對性的營銷活動,沒問題,DLA 支持把分析好的數據回流到 RDS

數據回流 RDS 映射 MySQL 數據庫信息進 DLA

要把分析好的數據回流到 RDS 我們首先一種機制來告訴 DLA 數據回流的目的地,得益于 DLA 統一的設計,我們就像映射 OSS 的數據一樣,我們映射一個 MySQL 數據庫進來就好了,比如我們要把數據寫到如下的數據庫里面:

 mysql -habcde.mysql.rds.aliyuncs.com -P3306 -uhello -pworld -Dmarketing

那么我們在 DLA 里面建一個映射的庫:

CREATE SCHEMA `mysql_marketing` WITH DBPROPERTIES 
( 
 CATALOG =  mysql , 
 LOCATION =  jdbc:mysql://abcde.mysql.rds.aliyuncs.com:3306/marketing ,
 USER= hello ,
 PASSWORD= world ,
 INSTANCE_ID =  your-rds-instance-id ,
 VPC_ID =  your-vpc-id-where-your-rds-lives 
);

這里需要解釋一下的是 VPC_ID 和 INSTANCE_ID, 我們知道為了安全的原因在阿里云上購買的 RDS 我們一般都會把它放在一個單獨的 VPC 里面,以保證只有我們自己可以訪問,這里為了讓 DLA 能夠訪問到我們的 MySQL 數據庫以進行數據回流,我們需要告訴 DLA 這個 RDS 的相關信息。

其中 INSTANCE_ID 和 VPC_ID 在 RDS 的詳情頁面都可以找到, 比如 VPC_ID :

由于 RDS 的安全組會對訪問的來源 IP 進行控制,我們需要把 DLA 相關的地址段 100.104.0.0/16 IP 地址段加入到你的 RDS 的白名單列表。

到這里為止,準備工作就完成了,我們的 mysql 數據庫建好了。

映射 MySQL 結果表進 DLA

我們要保存的結果很簡單,就是下單量前 10 的用戶, 這個表在 MySQL 數據庫里面的建表語句如下:

create table top10_user (
 custkey int,
 order_cnt bigint
);

而為了把這個表映射進 DLA 我們建一個對應的表,建表語句幾乎一樣:

use mysql_marketing;
create external table top10_user (
 custkey int,
 order_cnt bigint
);

ETL

下面我們就可以把查出來的數據進行回流了:

mysql  insert into mysql_marketing.top10_user
 -  select o_custkey, count(*) as cnt from oss_tpch.orders
 -  group by o_custkey order by cnt desc limit 10;
+------+
| rows |
+------+
| 10 |
+------+
1 row in set (4.71 sec)
mysql  select * from mysql_marketing.top10_user;
+---------+-----------+
| custkey | order_cnt |
+---------+-----------+
| 143500 | 39 |
| 102004 | 41 |
| 53302 | 38 |
| 3451 | 41 |
| 122623 | 40 |
| 129637 | 38 |
| 102022 | 41 |
| 117082 | 40 |
| 69682 | 39 |
| 79300 | 40 |
+---------+-----------+
10 rows in set (0.14 sec)

看完上述內容,你們掌握基于 DataLakeAnalytics 的數據湖實踐是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計7526字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 柘荣县| 边坝县| 彰化市| 万全县| 昂仁县| 新竹县| 高州市| 马关县| 罗甸县| 泗洪县| 巴彦县| 辽宁省| 隆化县| 武强县| 德州市| 凌海市| 巩留县| 阳谷县| 甘谷县| 驻马店市| 阜新市| 定远县| 修水县| 施秉县| 理塘县| 金堂县| 新安县| 方正县| 德钦县| 绥宁县| 黎平县| 绿春县| 濮阳市| 通河县| 内黄县| 山西省| 库车县| 宣化县| 崇信县| 莱西市| 都江堰市|