摘要:是用于獲取表中增量數(shù)據(jù)的一個(gè)數(shù)據(jù)通道,通過創(chuàng)建觸發(fā)器,能夠?qū)崿F(xiàn)和函數(shù)計(jì)算的自動(dòng)對(duì)接,讓計(jì)算函數(shù)中自定義的程序邏輯自動(dòng)處理表中發(fā)生的數(shù)據(jù)修改。開啟數(shù)據(jù)源表的功能觸發(fā)器功能需要先開啟數(shù)據(jù)表的功能,才能在函數(shù)計(jì)算中處理寫入表格存儲(chǔ)中的增量數(shù)據(jù)。
摘要: 表格存儲(chǔ)的增量數(shù)據(jù)流功能能夠使用戶使用API獲取Table Store表中增量數(shù)據(jù),并可以進(jìn)行增量數(shù)據(jù)流的實(shí)時(shí)增量分析、數(shù)據(jù)增量同步等。通過創(chuàng)建Table Store觸發(fā)器,能夠?qū)崿F(xiàn)Table Store Stream和函數(shù)計(jì)算的自動(dòng)對(duì)接,讓計(jì)算函數(shù)中自定義的程序邏輯自動(dòng)處理Table Store表中發(fā)生的數(shù)據(jù)修改,充分的利用了函數(shù)計(jì)算全托管、彈性伸縮的特點(diǎn)。
函數(shù)計(jì)算(Function Compute) 是一個(gè)事件驅(qū)動(dòng)的服務(wù),通過函數(shù)計(jì)算,用戶無需管理服務(wù)器等運(yùn)行情況,只需編寫代碼并上傳。函數(shù)計(jì)算準(zhǔn)備計(jì)算資源,并以彈性伸縮的方式運(yùn)行用戶代碼,而用戶只需根據(jù)實(shí)際代碼運(yùn)行所消耗的資源進(jìn)行付費(fèi)。
Table Store Stream是用于獲取Table Store表中增量數(shù)據(jù)的一個(gè)數(shù)據(jù)通道,通過創(chuàng)建Table Store觸發(fā)器,能夠?qū)崿F(xiàn)Table Store Stream和函數(shù)計(jì)算的自動(dòng)對(duì)接,讓計(jì)算函數(shù)中自定義的程序邏輯自動(dòng)處理Table Store表中發(fā)生的數(shù)據(jù)修改。
表格存儲(chǔ)高并發(fā)的寫入性能以及低廉的存儲(chǔ)成本非常適合物聯(lián)網(wǎng)、日志、監(jiān)控?cái)?shù)據(jù)的存儲(chǔ),我們可以將數(shù)據(jù)寫入到表格存儲(chǔ)中,同時(shí)在函數(shù)計(jì)算中對(duì)新增的數(shù)據(jù)做簡(jiǎn)單的清洗、轉(zhuǎn)換、聚合計(jì)算等操作,并將清洗之后的數(shù)據(jù)寫回到表格存儲(chǔ)的結(jié)果表中,并對(duì)原始明細(xì)數(shù)據(jù)及結(jié)果數(shù)據(jù)提供實(shí)時(shí)訪問。
下面,我們使用函數(shù)計(jì)算對(duì)表格存儲(chǔ)中的數(shù)據(jù)做簡(jiǎn)單的清洗,并寫入到結(jié)果表中。
數(shù)據(jù)定義
我們假設(shè)寫入的為日志數(shù)據(jù),包括三個(gè)基礎(chǔ)字段:
字段名稱 類型 含義
id 整型 日志id
level 整型 日志的等級(jí),越大表明等級(jí)越高
message 字符串 日志的內(nèi)容
我們需要將 level>1 的日志寫入到另外一張數(shù)據(jù)表中,用作專門的查詢。
實(shí)現(xiàn)過程:
創(chuàng)建實(shí)例及數(shù)據(jù)表
在表格存儲(chǔ)的控制臺(tái)創(chuàng)建表格存儲(chǔ)實(shí)例(__本次以 華東2 distribute-test 為例__),并創(chuàng)建源表(__source_data__)及結(jié)果表(__result__),主鍵為均 __id (整型)__,由于表格存儲(chǔ)是 schemafree 結(jié)構(gòu),無需預(yù)先定義其他屬性列字段。
開啟數(shù)據(jù)源表的Stream功能
觸發(fā)器功能需要先開啟數(shù)據(jù)表的Stream功能,才能在函數(shù)計(jì)算中處理寫入表格存儲(chǔ)中的增量數(shù)據(jù)。
Stream記錄過期時(shí)長(zhǎng) 為通過 StreamAPI 能夠讀取到的增量數(shù)據(jù)的最長(zhǎng)時(shí)間。
由于觸發(fā)器只能綁定現(xiàn)有的函數(shù),故先到函數(shù)計(jì)算的控制臺(tái)上在同region創(chuàng)建服務(wù)及函數(shù)。
創(chuàng)建函數(shù)計(jì)算服務(wù)
在函數(shù)計(jì)算的控制臺(tái)上創(chuàng)建服務(wù)及處理函數(shù),我們繼續(xù)使用華東2節(jié)點(diǎn)。
1.在華東2節(jié)點(diǎn)創(chuàng)建服務(wù)。
2.創(chuàng)建函數(shù)依次選擇:空白函數(shù)——不創(chuàng)建觸發(fā)器。
函數(shù)名稱為:etl_test,選擇 python2.7 環(huán)境,在線編輯代碼
函數(shù)入口為:etl_test.handler
代碼稍后編輯,點(diǎn)擊下一步。
3.進(jìn)行服務(wù)授權(quán)
由于函數(shù)計(jì)算需要將運(yùn)行中的日志寫入到日志服務(wù)中,同時(shí),需要對(duì)表格存儲(chǔ)的表進(jìn)行讀寫,故需要對(duì)函數(shù)計(jì)算進(jìn)行授權(quán),為方便起見,我們先添加 AliyunOTSFullAccess 與 __AliyunLogFullAccess __權(quán)限,實(shí)際生產(chǎn)中,建議根據(jù)權(quán)限最小原則來添加權(quán)限。
4.點(diǎn)擊授權(quán)完成,并創(chuàng)建函數(shù)。
5.修改函數(shù)代碼。
創(chuàng)建好函數(shù)之后,點(diǎn)擊對(duì)應(yīng)的函數(shù)—代碼執(zhí)行,編輯代碼并保存,其中,INSTANCE_NAME(表格存儲(chǔ)的實(shí)例名稱)、REGION(使用的區(qū)域)需要根據(jù)情況進(jìn)行修改:
使用示例代碼如下:
!/usr/bin/env python -- coding: utf-8 --import cbor
import json
import tablestore as ots
INSTANCE_NAME = "distribute-test"
REGION = "cn-shanghai"
ENDPOINT = "http://%s.%s.ots-internal.ali..."%(INSTANCE_NAME, REGION)
RESULT_TABLENAME = "result"
def _utf8(input):
return str(bytearray(input, "utf-8"))
def get_attrbute_value(record, column):
attrs = record[u"Columns"] for x in attrs: if x[u"ColumnName"] == column: return x["Value"]
def get_pk_value(record, column):
attrs = record[u"PrimaryKey"] for x in attrs: if x["ColumnName"] == column: return x["Value"]由于已經(jīng)授權(quán)了AliyunOTSFullAccess權(quán)限,此處獲取的credentials具有訪問表格存儲(chǔ)的權(quán)限
def get_ots_client(context):
creds = context.credentials client = ots.OTSClient(ENDPOINT, creds.accessKeyId, creds.accessKeySecret, INSTANCE_NAME, sts_token = creds.securityToken) return client
def save_to_ots(client, record):
id = int(get_pk_value(record, "id")) level = int(get_attrbute_value(record, "level")) msg = get_attrbute_value(record, "message") pk = [(_utf8("id"), id),] attr = [(_utf8("level"), level), (_utf8("message"), _utf8(msg)),] row = ots.Row(pk, attr) client.put_row(RESULT_TABLENAME, row)
def handler(event, context):
records = cbor.loads(event) #records = json.loads(event) client = get_ots_client(context) for record in records["Records"]: level = int(get_attrbute_value(record, "level")) if level > 1: save_to_ots(client, record) else: print "Level <= 1, ignore."
對(duì)表格存儲(chǔ) Stream 數(shù)據(jù)的格式詳情請(qǐng)參考Stream 數(shù)據(jù)處理
綁定觸發(fā)器
1.回到表格存儲(chǔ)的實(shí)例管理頁面,點(diǎn)擊表 source_data 后的 使用觸發(fā)器 按鈕,進(jìn)入觸發(fā)器綁定界面,點(diǎn)擊使用已有函數(shù)計(jì)算, 選擇剛創(chuàng)建的服務(wù)及函數(shù),勾選 表格存儲(chǔ)發(fā)送事件通知的權(quán)限, 進(jìn)行確定。
2.綁定成功之后,能夠看到如下的信息:
運(yùn)行驗(yàn)證
1.向 source_data 表中寫入數(shù)據(jù)。
2.在 result 表中查詢清洗后的數(shù)據(jù)
點(diǎn)擊 result 表的數(shù)據(jù)管理頁面,會(huì)查詢到剛寫入到 source_data 中的數(shù)據(jù)。
當(dāng)然,向 soure_data 寫入level <=1的數(shù)據(jù)將不會(huì)同步到 result 表中
原文鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/8050.html
摘要:而這里的單元格信息是唯一的,所以直接通過為一個(gè)空對(duì)象賦值即可。和相關(guān)的知識(shí)和技巧高亮的列單元格采用展示。在中,被選中的單元格會(huì)高亮相應(yīng)的行和列,以提醒用戶。 showImg(https://segmentfault.com/img/bVGkdk?w=900&h=500); XCEL 是一個(gè) Excel 數(shù)據(jù)清洗工具,其通過可視化的方式讓用戶輕松地對(duì) Excel 數(shù)據(jù)進(jìn)行篩選。 XCEL...
摘要:可以看到,遙遙領(lǐng)先的城市有三個(gè),加州是銷售之王。將再拖拽到,并右鍵將其粒度改為月。從上圖可以看到,指定了個(gè)分類,最右上角加州就是最突出的一組,整個(gè)聚類只有它一個(gè)元素,而畫面偏左下角的也是一類,這些是業(yè)績(jī)較差的一組數(shù)據(jù)。 1. 引言 引用著名瑞典統(tǒng)計(jì)學(xué)家 Hans Rosling 的一句話:想法來源于數(shù)字、信息,再到理解。 分析數(shù)據(jù)的最好方式是可視化,因?yàn)榭梢暬休d的信息密度更高,甚至可...
摘要:對(duì)于上述問題,混合云架構(gòu)無疑是企業(yè)的最佳選擇。解決方案將本地環(huán)境與公有云連通組成混合云架構(gòu),實(shí)現(xiàn)對(duì)本地環(huán)境計(jì)算能力的快速擴(kuò)展。前言當(dāng)前各行各業(yè)在積極擁抱云計(jì)算,但由于一些歷史原因和合規(guī)要求導(dǎo)致很多企業(yè)全面上云比較困難,比如企業(yè)監(jiān)管制度及合規(guī)要求一些核心數(shù)據(jù)庫必須保留在本地?cái)?shù)據(jù)中心;本地?cái)?shù)據(jù)中心作為企業(yè)固定資產(chǎn)不容易完全拋棄;有些大型集團(tuán)企業(yè)IT架構(gòu)復(fù)雜,全面遷移上云的影響難以評(píng)估等等。因此,...
摘要:對(duì)于上述問題,混合云架構(gòu)無疑是企業(yè)的最佳選擇。解決方案將本地環(huán)境與公有云連通組成混合云架構(gòu),實(shí)現(xiàn)對(duì)本地環(huán)境計(jì)算能力的快速擴(kuò)展。前言當(dāng)前各行各業(yè)在積極擁抱云計(jì)算,但由于一些歷史原因和合規(guī)要求導(dǎo)致很多企業(yè)全面上云比較困難,比如企業(yè)監(jiān)管制度及合規(guī)要求一些核心數(shù)據(jù)庫必須保留在本地?cái)?shù)據(jù)中心;本地?cái)?shù)據(jù)中心作為企業(yè)固定資產(chǎn)不容易完全拋棄;有些大型集團(tuán)企業(yè)IT架構(gòu)復(fù)雜,全面遷移上云的影響難以評(píng)估等等。因此,...
閱讀 1113·2021-11-19 09:40
閱讀 969·2021-11-12 10:36
閱讀 1259·2021-09-22 16:04
閱讀 3106·2021-09-09 11:39
閱讀 1266·2019-08-30 10:51
閱讀 1882·2019-08-30 10:48
閱讀 1221·2019-08-29 16:30
閱讀 464·2019-08-29 12:37