大数据上云第一课:MaxCompute授权和外表操作躲坑指南
一、子賬號創建、AK信息綁定
如果您是第一次使用子賬號登錄數加平臺和使用DataWorks,需要確認以下信息:
? 該子賬號所屬主賬號的企業別名。
? 該子賬號的用戶名和密碼。
? 該子賬號的AccessKey ID和AccessKey Secret。
? 確認主賬號已經允許子賬號啟用控制臺登錄。
? 確認主賬號已經允許子賬號自主管理AccessKey。
1、子賬號創建
(1)創建子賬號
(2)綁定AK信息
(3)DataWorks給定角色
(1)使用阿里云賬號(主賬號)登錄RAM控制臺。
(2)在左側導航欄的人員管理菜單下,單擊用戶。
(3)單擊新建用戶。
(4)輸入登錄名稱和顯示名稱。
(5)在訪問方式區域下,選擇控制臺密碼登錄。
(6)單擊確認。
2、創建RAM子賬號的訪問密鑰
訪問密鑰對開發人員在DataWorks中創建的任務順利運行非常重要,該密鑰區別于登錄時填寫的賬號和密碼,主要用于在阿里云各產品間互相認證使用權限。因此主賬號需要為子賬號創建AccessKey。創建成功后,請盡可能保證AccessKey ID和AccessKey Secret的安全,切勿讓他人知曉,一旦有泄漏的風險,請及時禁用和更新。運行密鑰AK包括AccessKey ID和AccessKey Secret兩部分。如果云賬號允許RAM用戶自主管理AccessKey,RAM用戶也可以自行創建AccessKey。
為子賬號創建AccessKey的操作如下所示。
(1)在左側導航欄的人員管理菜單下,單擊用戶。
(2)在用戶登錄名稱/顯示名稱列表下,單擊目標RAM用戶名稱。
(3)在用戶AccessKey 區域下,單擊創建新的AccessKey。
(4)單擊確認。
3、給RAM子賬號授權
如果您需要讓子賬號能夠創建DataWorks工作空間,需要給子賬號授予AliyunDataWorksFullAccess權限。
(1)在左側導航欄的人員管理菜單下,單擊用戶。
(2)在用戶登錄名稱/顯示名稱列表下,找到目標RAM用戶。
(3)單擊添加權限,被授權主體會自動填入。
(4)在左側權限策略名稱列表下,單擊需要授予RAM用戶的權限策略。
(5)單擊確定。
(6)單擊完成。
二、子賬號生產環境創建函數、訪問資源授權,OSS外部表授權
1、賬號生產環境創建函數、訪問資源授權
子賬號登錄DataWorks控制臺之后,單擊工作空間管理,成員管理給該子賬號一個相應的角色。各角色對應的權限可以在工作空間管理界面的權限列表查看。此處添加的成員角色對生產環境是隔離的。下面介紹一下生產環境創建函數、訪問資源授權。
(1)創建一個新的角色,給角色授權。
(2)創建UDF函數。
CREATE FUNCTION banzha_udf as 'com.aliyun.udf.test.UDF_DEMO' using '1218.jar';前提條件是已經上傳1818.jar包。資源上傳結合搬站第一課視頻。
2、OSS訪問授權
MaxCompute需要直接訪問OSS的數據,前提是需要您將OSS的數據相關權限賦給MaxCompute的訪問賬號。如果沒有進行相應授權創,創建外部表會發現報錯如下:
此時需要我們授權去訪問OSS
授權方式有兩種:
(1)當MaxCompute和OSS的Owner是同一個賬號時,可以直接登錄阿里云賬號后,單擊此處完成一鍵授權。一鍵授權,我們可以在訪問控制給改子賬號添加管理對象存儲服務(OSS)權限(AliyunOSSFullAccess)。
(2)自定義授權
a.新增一個RAM角色oss-admin
b.修改角色策略內容設置
c.授予角色訪問OSS必要的權限AliyunODPSRolePolicy
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" } ] } --可自定義其它權限。d.將權限AliyunODPSRolePolicy授權給該角色。
三、OSS外部表創建指引
1、外部表創建的語法格式介紹
(1)外部表創建示例:
(2)LOCATION說明
LOCATION必須指定一個OSS目錄,默認系統會讀取這個目錄下所有的文件。
建議您使用OSS提供的內網域名,否則將產生OSS流量費用。
訪問OSS外部表,目前不支持使用外網Endpoint。
目前STORE AS單個文件大小不能超過3G,如果文件過大,建議split拆分。
建議您OSS數據存放的區域對應您開通MaxCompute的區域。由于MaxCompute只有在部分區域部署,我們不承諾跨區域的數據連通性。
(3)外部表創建格式說明
語法格式與Hive的語法相當接近,但需注意以下問題。
(4)用Arn、AK兩種認證方式建外表示例
a.用RAM中具體使用的Role的Arn的信息創建外部表
當關聯OSS權限使用STS模式授權時,需要該參數指定odps.properties.rolearn屬性,屬性值為RAM中具體使用的Role的Arn的信息。
示例如下:
CREATE EXTERNAL TABLE IF NOT EXISTS fc_csv ( vehicleId string, recordId string, patientId string, calls string, locationLatitute string, locationLongtitue string, recordTime string, direction string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES('separatorChar'=',','odps.properties.rolearn'='acs:ram::1928466352305391:role/oss-admin') STORED AS TEXTFILE LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/oss-odps-bucket/extra_test/fc_csv';b.明文AK創建外部表(不推薦使用這種方式)
如果不使用STS模式授權,則無需指定odps.properties.rolearn屬性,直接在Location傳入明文AccessKeyId和AccessKeySecret。
Location如果關聯OSS,需使用明文AK,寫法如下所示。
示例如下:
CREATE EXTERNAL TABLE IF NOT EXISTS fc_csv1 ( vehicleId string, recordId string, patientId string, calls string, locationLatitute string, locationLongtitue string, recordTime string, direction string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES('separatorChar'=',','odps.properties.rolearn'='acs:ram::1928466352305391:role/oss-admin') STORED AS TEXTFILE -- LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/oss-odps-bucket/extra_test/fc_csv'; LOCATION 'oss://LTAI4FfgVEQQwsNQ*******:J8FGZaoj2CMcunFrVn1FrL*****wM@oss-cn-beijing-internal.aliyuncs.com/oss-odps-bucket/extra_test/fc_csv';2、創建 Rcfile 類型的外部表
(1)查詢HIVE表schema
結果如下:
CREATE TABLE `fc_rcfile`( `id` int, `name` string) PARTITIONED BY ( `time_ds` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat' LOCATION 'hdfs://emr-header-1.cluster-138804:9000/user/hive/warehouse/extra_demo.db/fc_rcfile'(2)在MaxCompute創建外部表
CREATE EXTERNAL TABLE IF NOT EXISTS fc_rcfile ( `id` int, `name` string) PARTITIONED BY ( `time_ds` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe' STORED AS RCFILE LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/oss-huabei2/jianwei/fc_rcfile/';(3)添加分區
alter table fc_rcfile ADD PARTITION (time_ds = '20191209') ; alter table fc_rcfile ADD PARTITION (time_ds = '20191210') ; alter table fc_rcfile ADD PARTITION (time_ds = '20191211') ; 批量創建分區可參數使用MMA工具(4)查詢數據
select * from fc_rcfile where time_ds = '20191209' ; select * from fc_rcfile where time_ds = '20191210' ; select * from fc_rcfile where time_ds = '20191211' ;3、創建Json類型的外部表
(1)創建Json類型的外部表
(2)在對應的OSS控制臺bucket上傳Json文件數據。
(3)查詢外部表的數據
報錯信息如下所示:
解決辦法:需要設置開啟hive兼容的flag。
重新查詢數據即可正確返回Json數據。
以下是在Hive中查詢的數據,可以看到這兩處數據是一致的。
4、創建CSV格式的外部表
(1)創建CSV格式的外部表
(2)查詢數據
set odps.sql.hive.compatible=true; select * from fc_csv;不加Hive兼容的flag設置會發現有如下報錯信息:
FAILED: ODPS-0123131:User defined function exception - internal error - Fatal Error Happended
5、創建壓縮格式的外部表
創建外部表時列分隔符需要使用field.delim。選擇delimiter會報錯或數據沒有按照預期的分割符去分割。以下分別按照兩種方式去創建外部表。
需要設置以下說明的屬性flag。
(1)創建外部表
查詢數據的時候會發現數據并沒有按照我們的分隔符去進行分割,如下圖所示:
6、創建存在新數據類型的外部表
當外部表創建字段涉及新數據類型時,需要開啟新類型flag。
否則會報如下錯誤:
四、利用Information Schema元數據查看project、table的操作行為以及費用計算
1、主賬號安裝package
開始使用前,需要以Project Owner身份安裝Information Schema的權限包,獲得訪問本項目元數據的權限。
以下錯誤是沒有安裝對應的Information Schema的權限包和子賬號沒有相關的權限
安裝Information Schema的權限包方式有如下兩種:
(1)在MaxCompute命令行工具(odpscmd)中執行如下命令。
(2)在DataWorks中的數據開發 > 臨時查詢中執行如下語句。
install package information_schema.systables;2、給子賬號授權
grant read on package information_schema.systables to role worker;3、查詢元數據信息
select * from information_schema.tasks_history limit 20;
TASKS_HISTORY字段列信息如下:
4、通過 TASKS_HISTORY 計算SQL費用
SQL任務按量計費:您每執行一條SQL作業,MaxCompute將根據該作業的輸入數據及該SQL的復雜度進行計費。該費用在SQL執行完成后產生,并在第二天做一次性的計費結算。
計算輸入數據量:指一條SQL語句實際掃描的數據量,大部分的SQL語句有分區過濾和列裁剪,所以一般情況下這個值會遠小于源表數據大小。
在 information_schema.tasks_history中字段input_bytes為實際掃描的數據量也就是我們的計算輸入數據量。字段complexity為sql復雜度。所以我們可以根據以下公式來計算SQL費用。
歡迎加入“MaxCompute開發者社區2群”,點擊鏈接MaxCompute開發者社區2群申請加入或掃描以下二維碼加入。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的大数据上云第一课:MaxCompute授权和外表操作躲坑指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算与星辰大海的结合
- 下一篇: 完美日记:保障电商大促活动平稳运行