大數據概述
大數據的定義
大數據,指無法在可承受的時間范圍內用常規軟件進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的信息資產。
《第三次浪潮》-托夫勒>>大數據應用-麥肯錫>>《大數據時代》-舍恩伯格>>計算助理-谷歌>>國內規模化-阿里云
發展歷程及特點
主要特征:4V
- Volume 體積大
- Variety 類型多
- Value 有價值
- Velocity 變化快
換個角度
- 大:數據體量大
- 雜:數據類型雜
- 全:數據完備性
- 多:來源維度多
- 快:增長變化快
- 久:積累時間長
- 活:在線隨時用
- 簡:簡單易處理
- 稀:價值密度地
- 聯:數據相關性
如何產生的?
為什么會有大數據?
- 移動互聯網帶來爆炸式的增長
- 數據作為資產其價值得到認可
- 存儲和計算能力的飛速發展
大數據從哪來?
媒體數據、網絡日志、公共設施、單位組織、大型設備、工業領域、地理位置、基因圖譜
大數據的價值
解決四種問題
- 坐井觀天
- 一葉障目
- 盲人摸象
- 城門魚殃
提示兩種能力
- 一葉知秋
- 運籌帷幄
大數據核心價值
- 洞察insight
- 預測predict
存儲、計算與分析
分布式存儲
分布式計算
數據分析
- 數據采集與處理
- 數據質量與管理
- 機器學習
- 數據可視化
大數據流行技術
Hadoop生態圈
阿里云體系
數加平臺介紹
數加定位
計算引擎:離線計算 流式計算 在線計算
數加業務范圍
分析型數據庫
AnalyticDB產品介紹
OLAP:在線分析處理,以分析為主
OLTP:在線業務系統,以業務支撐為主
OLAP(On-Line Analytical Processing)是數據倉庫的主要的應用,專門設計用于支持復雜的分析操作
主要概念:
- 維度:觀察事物的角度(屬性),即從哪些方面來觀察
- 度量:也稱為事實,即記錄了一次實際的測量、購買等發生的事實,包含維度和測量值
MPP數據庫
MMP(Massive Parallel Processing,大規模并行處理):由多個耦合處理單元組成,每個單元擁有自己的CPU、內存、存儲等,每個單元內部都有操作系統和管理數據庫的實例副本,最大特點在于不共享資源
- 私有資源
- 分布式存儲
- 分布式計算
- 任務并行執行
- Share-nothing
- 橫向擴展
分析型數據庫AnalyticDB
產品特點
- 分檔存儲
- 自由查詢
- 智能優化 (基于歷史的優化)
- 方便接口
- 分層安全
- 彈性多租戶
基本概念
表組:是一系列可以發生關聯的表的集合,是一個邏輯的概念。可分為普通表組和維度表組
表組特點:
- 表組是數據物理分配的最小單元
- 同表組內的表才可以快速hash join
- 同一個表組內的表共享一些配置
- 建議同表組中的表一級分區一致
MaxCompute
目標:
- 了解MaxCompute特點
- 掌握客戶端工具的使用
- 掌握MaxCompute SQL
- 了解權限管理與項目空間保護
產品介紹
大數據計算服務(MaxCompute,原ODPS)提供針對TB/PB級數據、實時性要求不高的分布式處理能力,應用于數據分析、挖掘、商業智能等領域。
MaxCompute對象:
分區表指的是在創建表時指定分區鍵,即指定表內的某幾個字段作為分區列。
在使用數據時如果指定了需要訪問的分區名稱,則只會讀取相應的分區,避免全表掃描,提高處理效率,降低費用
其他概念:
任務(Task):MaxCompute基本計算單元,SQL即MR都是通過任務完成的
實例(Instance):任務的一個具體實例,表示實際運行的task
沙箱(SandBox):按照安全策略限制程序行為的執行環境
- 不允許直接訪問本地文件
- 不允許直接訪問分布式文件系統
- 不允許JNI調用機制
- 不允許起子進程執行Linux命令
- 不允許獲取本地IP地址
- Java反射限制
數據類型:
架構介紹
連接使用
- 自帶命令行工具MaxCompute Console
- 可視化客戶端工具:Intelij Studio
- Eclipse
- 管理控制臺
數據上傳和下載
主要方式有:
- Tunnel 命令
- Tunnel SDK
- 管理控制臺
- 數據同步工具
這里主要介紹 Tunnel 命令
Tunnel 基本語法:tunnel <subcommand> [options] args
數據上傳:tunnel upload [options] <path> <[project.]table[/partition]>
數據下載:tunnel download [options] <[project.]table[/partition]> <path>
幾個重要參數:
關于分隔符:
- 支持多個字符的列分隔符和行分隔符
- 支持控制字符等不可見字符做分隔符
- 列分隔符不能包含行分隔符
- 轉義字符分隔符,在命令行模式下只支持\r,\n和\t
sql組成:
DDL:數據庫模式定義語言,關鍵字:create
DML:數據操縱語言,關鍵字:Insert、delete、update
DCL:數據庫控制語言 ,關鍵字:grant、remove
DQL:數據庫查詢語言,關鍵字:select
DDL 介紹
基本語法:
建表:create table [if not exists] table_name
刪表:drop table [if exists] table_name;
修改表名:alter table table_name rename to new_table_name;
表的生命周期:
生命周期(LifeCycle):MaxCompute 表中的數據,從最后一次更新的時間算起,在經過指定的時間后沒有變動,則此表將 MaxCompute 自動回收(刪除)。此指定時間就是該MaxCompute 表的生命周期。
快捷建表 CTAS
兩種謂語動詞 like 和 as
CREATE TABLE < table_name> AS SELECT <column_list> FROM <table_name> WHERE...;
CREATE TABLE < table_name> LIKE <table_name>;
like 和 as 的區別:
- 數據
- as可以帶入數據,可以依賴于多張表
- like只能復制單張表的表結構,不能帶入數據
- 屬性
- as不能帶入LIFECYCLE、分區鍵信息、注釋等
- LIKE不能帶入LIFECYCLE、可以帶入分區鍵信息、注釋等
分區操作:
添加分區:alter table table_name add [if not exists] partition partition_spec
刪除分區:alter table table_name drop [if exists] partition_spec
修改表屬性:
添加列:alter table table_name add colums (col_name1 type1, col_name2 type2 ...)
改列名:alter table table_name change column old_col_name rename to new_col_name;
表注釋:alter table table_name set comment 'tbl comment';
列注釋:alter table table_name change column col_name comment 'comment';
生命周期:alter table table_name set lifecycle days;
修改時間:alter table table_name touch [partition(partition_col='partition_col_value', ...
視圖操作:
創建視圖:CREATE [OR REPLACE] VIEW [IF NOT EXISTS] view_name
刪除視圖:DROP VIEW [IF NOT EXISTS] view_name;
重命名視圖:ALTER VIEW view_name RENAME TO new_view_name;
DML介紹
查詢 SELECT
select [all | distinct] select_expr, select_expr, ...
from table_reference
[where where_condition]
[group by col_list]
[order by order_condition]
[distribute by distribute_condition [sort by sort_condition] ]
[limit number]
更新數據 INSERT INTO/OVERWEITE
輸出到普通表或靜態分區
insert overwrite | into table tablename [partition (partcol1=val1, partcol2=val2 ...)]
select_statement
from from_statement;
輸出到動態分區
insert overwrite table tablename partition (partcol1, partcol2 ...)
select_statement from from_statement;
注:
如果目有多級分區,在運行insert語句時允許指定部分分區為靜態,但是靜態分區必須是高級分區
動態生成的分區值不可以為null
多路輸出 MULTI INSERT
from from_statement
insert overwrite | into table tablename1
[partition (partcol1=val1, partcol2=val2 ...)]
select_statement1
[insert overwrite | into table tablename2 [partition ...]
select_statement2]
多路輸出的限制:
單個SQL里最多可以寫出256路輸出
對于分區表,同一個目標分區不可以出現多次
對于未分區表,該表不能作為目標表多次出現
對于同一張分區表的不同分區,不能同時有insert overwrite 和 insert into 操作
表關聯 JOIN
MAPJOIN
使用情景:一個大表和一個或多個小表做join
基本原理:將用戶指定的小表全部加載到執行join操作的程序的內存中,從而加快join的執行速度
分支表達式 CASE WHEN
兩種 CASE WHEN 語法
CASE <value>
WHEN <condition_1> then <result_1>
WHEN <condition_2> then <result_2>
...
else <result_n>
END
CASE
WHEN <condition_1> then <result_1>
WHEN <condition_2> then <result_2>
...
else <result_n>
END
內置函數
- 值函數:數學運算函數、字符串處理函數、日期處理函數
- 窗口函數:常見統計量類、排名類、偏移定位類、分組抽樣類
- 聚合函數:常見統計量類、字符串類
- 其他函數:類型轉換函數、分支判斷函數、其他
其它使用方式
用戶自定函數(User Defined Function , UDF)
MapReduce
Graph
選擇流程
大數據開發套件DataIDE
DataIDE 產品概述
大數據開發套件(DataIDE) 是阿里云數加重要的Paas平臺產品,基于MaxCompute作為核心的計算、存儲引擎,提供了海量數據的離線加工分析、數據挖掘的能力。提供全面托管的工作流服務,一站式開發管理的界面,幫助企業專注于數據價值的挖掘和探索。
- 全面托管的調度
- 多種任務類型
- 可視化開發
- 監控告警
數據開發流程
DataIDE應用場景
- 將業務系統產生的數據輕松上云,構建大型數據倉庫和BI應用,利用MaxCompute強大的海量存儲與數據處理能力
- 基于大數據開發套件快速使用和分析數據,將大數據加工結果導出后直接應用于業務系統,實現數據化運營
- 針對作業調度與運維的復雜性,大數據開發套件提供統一友好的調度系統和可視化調度運維界面,解決運維管理不便等問題
DataIDE基本概念
任務(Task):對數據執行的操作,通常每個任務使用0或0個以上數據表(數據集)作為輸入,生成一個或多個數據表(數據集)作為輸出。DataIDE中任務主要分為三種:節點任務、工作流任務以及內部節點。
實例(Instance):代表了某個任務在某時某刻執行的一個快照,包含任務的運行時間、運行狀態運行日志等信息。在調度系統中的任務經過調度系統、手動觸發運行后會生成一個實例。在DataIDE的調度系統自動調度的任務,會提前生成對應的實例。
提交(Submit):提交指開發的節點任務、工作流任務從開發IDE環境發布到調度系統的過程。完成提交以后,相應的代碼、調度配置全部合并到調度系統中,調度系統按照相關配置進行調度操作。未提交的節點任務、工作流任務不會進入到調度系統。
DataIDE中的角色
多環境
分為開發、測試、生產環境
DataIDE操作演示
- 服務開通
- 控制臺介紹
- 項目管理
- 數據集成
- 數據開發
- 數據管理
- 運維中心
配套實驗:DataIDE基本操作
- 創建項目
- 數據同步
- SQL任務
- 調度依賴
- 任務運維
推薦引擎RecEng
推薦系統介紹
什么是推薦系統?
利用電子商務網站向客戶提供商品信息和建議,幫助用戶覺得購買什么產品,模擬銷售人員幫助客戶完成購買過程
什么是個性化推薦系統?
個性化推薦系統是根據用戶的興趣特點和購買行為,向用戶推薦感興趣的信息和商品。
個性化推薦系統是建立在海量數據挖掘基礎上的一種高級商務智能平臺,以幫助電子商務網站為其顧客購物提供完全個性化的決策支持和信息服務。
推薦引擎RecEng介紹
阿里云推薦引擎(Recommendation Engine,RecEng)是在阿里云公有云環境下建立的一套推薦服務框架,目標是讓廣大中小企業能夠使用這套框架快速搭建滿足自身業務需求的推薦服務。
- 簡單便捷
- 使用門檻低
- 算法開放
推薦引擎RecEng使用
配套實驗
- 開通云資源
- 數據上傳加工
- 推薦引擎配置
- 啟動任務
- 獲取推薦結果
Quick BI數據可視化(靜態)
目標:
- 了解DataV的產品特點
- 了解可視化大屏的使用場景
- 使用DataV模板制作可視化大屏
DataV 產品介紹
DataV是阿里云提供的數據可視化在線工具。通過拖拽式的操作,使用數據連接、可視化組件庫、行業設計模板庫、多終端適配與發布運維等功能,讓非專業人員也可以快速的將數據的價值通過視覺進行傳達
- 多種場景模板
- 豐富開放的圖標庫
- 支持多種數據源
- 零門檻圖形化界面
- 支持數據交互分析
- 多種適配與發布方式
DataV 大屏介紹
大屏設計原則:
DataV數據可視化(動態)
目標:
- 了解DataV的產品特點
- 了解可視化大屏的使用場景
- 使用DataV模板制作可視化大屏
DataV 產品介紹
DataV是阿里云提供的數據可視化在線工具。通過拖拽式的操作,使用數據連接、可視化組件庫、行業設計模板庫、多終端適配與發布運維等功能,讓非專業人員也可以快速的將數據的價值通過視覺進行傳達
- 多種場景模板
- 豐富開放的圖標庫
- 支持多種數據源
- 零門檻圖形化界面
- 支持數據交互分析
- 多種適配與發布方式
DataV 大屏介紹
大屏設計原則:
機器學習
目標:
- 了解機器學習及阿里云PAI
- 了解簡單的聚類算法和分類算法
- 了解機器學習的基本使用流程
- 使用PAI進行聚類/分類分析
機器學習介紹
分類
阿里云機器學習PAI介紹
分類算法KNN介紹
分類算法通過對已知類別訓練集的分析,從中發現分類規則,以此預測新數據的類別。分類算法的應用十分廣泛,銀行風險評估、客戶類別分類、文本檢索和搜索引擎分類、安全領域中的入侵檢測以及軟件項目中的應用等。
按原理分類:
- 基于統計的:如貝葉斯分類
- 基于規則的:如決策樹算法
- 基于神經網絡的:神經網絡算法
-
基于距離的:KNN(K最近鄰)
常用評估指標:
- 精確率:預測結果與實際結果的比例
- 召回率(查勤率):預測結果中某類結果的正確覆蓋率
- F1-Score:統計量,綜合評估分類模型,取值在0-1之間
KNN優缺點
優點
- 原理簡單,容易理解,容易實現
- 重新訓練代價較低
- 時間、空間復雜度取決于訓練集(一般不算太大)
缺點
- KNN屬于lazy-learning算法,得到結果的及時性差
- k值對結果影響大(試想k=1和k=N的極端情況)
- 不同類記錄相差較大時容易誤判
- 樣本點多時,計算量較大
- 相對于決策樹,結果可解釋性不強
聚類算法K-Means介紹
聚類:就是將相似的事物聚集在一起,而將不相似的事物劃分到不同的類別的過程。它是一種探索性的分析,不必事先給出一個分類的標準,聚類分析能夠從樣本數據出發,自動進行分類。聚類分析所使用方法的不同,常常會得到不同的結論。
常見算法:層次聚類、劃分聚類、基于密度的聚類
K-Means優缺點
優點:
- 原理簡單,容易理解,容易實現
- 聚類結果容易解釋
- 聚類結果相對較好
缺點:
- 分類個數k需要事先指定,且指定的k值不同,聚類結果相差較大
- 初始的k個類簇中心對最終結果有影響,選擇不同,結果可能不同
- 能識別的類簇僅為球狀,非球狀的聚類效果很差
- 樣本點多時,計算量較大
- 對異常值敏感,對離散值需要特殊處理
機器學習常見流程介紹
數據挖掘方法論