日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

wordcount代码_通过腾讯云 Serverless Regsitry 快速开发与部署一个 WordCount 实例

發(fā)布時(shí)間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wordcount代码_通过腾讯云 Serverless Regsitry 快速开发与部署一个 WordCount 实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在學(xué)習(xí) MapReduce 的過程中,不少人接觸的第一個(gè)項(xiàng)目就是單詞計(jì)數(shù)。單詞計(jì)數(shù)通過兩個(gè)函數(shù) Map 和 Reduce,可以快速地統(tǒng)計(jì)出文本文件中每個(gè)單詞出現(xiàn)的個(gè)數(shù),它雖然簡(jiǎn)單,但也是最能體現(xiàn) MapReduce 思想的程序之一。而 Serverless 的出現(xiàn),為 MapReduce 進(jìn)行大數(shù)據(jù)處理又提供了一個(gè)新的部署方案,Serverless 與 MapReduce 究竟如何結(jié)合呢?

本文將通過一個(gè)簡(jiǎn)單的教程,指導(dǎo)大家快速開發(fā)一個(gè)基于 MapReduce 的 WordCount 應(yīng)用模版,并在 Serverless 應(yīng)用中心 Registry 里實(shí)現(xiàn)復(fù)用。

前提條件

已安裝 Serverless Framework,并保證您的 Serverless Framework 不低于以下版本:

$ serverless –v Framework Core: 1.74.1 (standalone) Plugin: 3.6.14 SDK: 2.3.1 Components: 2.31.6

實(shí)現(xiàn)概要

下面是該實(shí)例的實(shí)現(xiàn)流程:

  • 創(chuàng)建函數(shù)與 COS Bucket。
  • 用戶將對(duì)象上傳到 COS 中的源存儲(chǔ)桶(對(duì)象創(chuàng)建事件)。
  • COS Bucket檢測(cè)到對(duì)象創(chuàng)建事件。
  • COS 調(diào)用函數(shù)并將事件數(shù)據(jù)作為參數(shù)傳遞給函數(shù),由此將 cos:ObjectCreated:* 事件發(fā)布給函數(shù)。
  • SCF 平臺(tái)接收到調(diào)用請(qǐng)求,執(zhí)行函數(shù)。
  • 函數(shù)通過收到的事件數(shù)據(jù)獲得了 Bucket 名稱和文件名稱,從該源 Bucket中獲取該文件,根據(jù)代碼中實(shí)現(xiàn)的 wordcount 進(jìn)行字?jǐn)?shù)統(tǒng)計(jì),然后將其保存到目標(biāo) Bucket 上。

部署成功后,本模版將會(huì)為您創(chuàng)建以下資源:

  • 兩個(gè) SCF 函數(shù):Mapper 和 Reducer。
  • 三個(gè) COS Bucket:srcmr、middlestagebucket 和 destmr。
  • Mapper 函數(shù)將會(huì)綁定 srcmr 觸發(fā),Reducer 函數(shù)將會(huì)綁定 middlestagebucket 觸發(fā),destmr 將會(huì)用來(lái)接收最終的統(tǒng)計(jì)結(jié)果。

開發(fā)步驟

  • 通過 COS 組件完成創(chuàng)建上傳文件的 COS 存儲(chǔ)桶的配置文件編寫,yml 文件配置如下
  • # serverless.yml org: serverless app: MapReduce_Demo stage: dev component: cos name: destmrinputs:bucket: destmrregion: ap-guangzhou

    同理,完成其它兩個(gè)存儲(chǔ)桶配置。

  • 完成函數(shù)代碼編寫,本模版中需要?jiǎng)?chuàng)建兩個(gè)函數(shù):Map 函數(shù)與 Reduce 函數(shù),并為其分別配置 yml 文件
  • Map 函數(shù) yml 文件示例如下:

    component: scf # (必選) 組件名稱,在該實(shí)例中為scf name: map_function # 必選) 組件實(shí)例名稱. org: serverless # (可選) 用于記錄組織信息, app: MapReduce_Demo # (可選) 用于您的 AP名稱 stage: dev # (可選) 用于區(qū)分環(huán)境信息,默認(rèn)值是 devinputs:name: map_functionsrc: ./handler: map_function.main_handler runtime: Python2.7 region: ap-guangzhou description: This is one of the MapReduce function which is map_functionmemorySize: 128 timeout: 10environment:variables:Bucket: ${output:${stage}:${app}:middlestagebucket.bucket}TENCENT_SECRET_ID: ${env:TENCENT_SECRET_ID}TENCENT_SECRET_KEY: ${env:TENCENT_SECRET_KEY}events: # 觸發(fā)器- cos: # cos觸發(fā)器name: ${output:${stage}:${app}:srcmr.cosOrigin}parameters:bucket: ${output:${stage}:${app}:srcmr.cosOrigin}events: 'cos:ObjectCreated:*'enable: true
  • 完成配置后,整個(gè)應(yīng)用模版結(jié)構(gòu)如下:
  • Map_Reduce_Demo |--bucket_destmr|--serverless.yml |--bucket_middlestage|--serverless.yml |--bucket_srcmr|--serverless.yml |--fun_map|--serverless.yml|--map_function.py |--fun_reduce|--serverless.yml|--reduce_function.py

    您也可根據(jù)您的實(shí)際業(yè)務(wù)邏輯進(jìn)行更改。

    模版上傳

    完成模版開發(fā)后,您可以將您的模版上傳至 Registry,供大家公開復(fù)用。

  • 在項(xiàng)目根目錄下配置上傳至 Registry 的項(xiàng)目模版信息:
  • # serverless.yml name: mapreduce-demo # 項(xiàng)目模板的名字 displayName: 基于 MapReduce 統(tǒng)計(jì)字?jǐn)?shù) #項(xiàng)目模板展示在控制臺(tái)的名稱(中文) author: Tencent Cloud, Inc. # 作者的名字 org: Tencent Cloud, Inc. # 組織名稱,可選 type: template #項(xiàng)目類型,可填 template 或 component,此處為模版 description: Deploy a MapReduce wordcount application. # 描述您的項(xiàng)目模板 description-i18n:zh-cn: 本示例Demo演示怎么利用COS來(lái)做MapReduce,一共需要2個(gè)函數(shù):map_function和reduce_function,3個(gè)COS Bucket:srcmr、middlestagebucket 和 destmr # 中文描述 keywords: tencent, serverless, cos, scf, mapreduce # 關(guān)鍵字 repo: # 源代碼 Repo readme: # 詳細(xì)的說(shuō)明文件 license: MIT # 版權(quán)聲明 src: # 描述項(xiàng)目中的哪些文件需要作為模板發(fā)布src: ./ # 指定具體的相對(duì)目錄,此目錄下的文件將作為模板發(fā)布exclude: #描述在指定的目錄內(nèi)哪些文件應(yīng)該被排除- .env- serverless.yml
  • 上傳模版
  • $ sls registry publish serverless ? registry Publishing "mapreduce-demo@0.0.0"...Serverless ? Successfully published mapreduce-demo

    模版復(fù)用

    所有上傳到 Registry 的模版都支持公開下載與復(fù)用的,操作如下:

  • 下載模版
  • $ sls init -t mapreduce-demo serverless ? framework- Successfully created "mapreduce-demo" instance in the currennt working directory. - Don't forget to update serverless.yml and install dependencies if needed. - Whenever you're ready, run "serverless deploy" to deploy your new instance.mapreduce-demo ? Created
  • 在環(huán)境配置 .env 文件中填入您自己的密鑰信息
  • # .env TENCENT_SECRET_ID=123 TENCENT_SECRET_KEY=123
  • 部署項(xiàng)目
  • $ cd mapreduce-demo $ sls deploy --all serverless ? frameworksrcmr: region: ap-guangzhoubucket: srcmr-0000000000cosOrigin: srcmr-0000000000.cos.ap-guangzhou.myqcloud.comurl: http://srcmr-0000000000.cos.ap-guangzhou.myqcloud.comvendorMessage: nulldestmr: region: ap-guangzhoubucket: destmr-0000000000cosOrigin: destmr-0000000000.cos.ap-guangzhou.myqcloud.comurl: http://destmr-0000000000.cos.ap-guangzhou.myqcloud.comvendorMessage: nullmiddlestagebucket: region: ap-guangzhoubucket: middlestagebucket-0000000000cosOrigin: middlestagebucket-0000000000.cos.ap-guangzhou.myqcloud.comurl: http://middlestagebucket-0000000000.cos.ap-guangzhou.myqcloud.comvendorMessage: nullmap_function: functionName: map_functiondescription: This is one of the MapReduce function which is map_functionnamespace: defaultruntime: Python2.7handler: map_function.main_handlermemorySize: 128lastVersion: $LATESTtraffic: 1triggers: cos: - srcmr-0000000000.cos.ap-guangzhou.myqcloud.comvendorMessage: nullreduce-function: functionName: reduce_functiondescription: This is one of the MapReduce function which is reduce_functionnamespace: defaultruntime: Python2.7handler: reduce_function.main_handlermemorySize: 128lastVersion: $LATESTtraffic: 1triggers: cos: - middlestagebucket-0000000000.cos.ap-guangzhou.myqcloud.comvendorMessage: null8s ? mapreduce-demo ? Success

    項(xiàng)目測(cè)試

  • 找到模版文檔中的 test.txt 文件。
  • 切換至對(duì)象存儲(chǔ)控制臺(tái),選擇創(chuàng)建好的 Bucket:srcmr,單擊「上傳文件」。
  • 在彈出的「上傳文件」窗口中,選擇 test.txt,單擊「確定上傳」。
  • 切換至云函數(shù)控制臺(tái),查看執(zhí)行結(jié)果。在運(yùn)行日志中可以看到打印出來(lái)的日志信息。
  • 切換至 對(duì)象存儲(chǔ)控制臺(tái),選擇創(chuàng)建好的 Bucket:destmr,查看生成的文件。
  • 項(xiàng)目移除

    可以通過以下命令移除應(yīng)用

    $ sls remove --allserverless ? framework8s ? maprecude ? Success

    One More Thing

    立即體驗(yàn)騰訊云 Serverless Demo,獲取免費(fèi)試用額度 serverless/start

    歡迎訪問:Serverless 中文網(wǎng)!

    總結(jié)

    以上是生活随笔為你收集整理的wordcount代码_通过腾讯云 Serverless Regsitry 快速开发与部署一个 WordCount 实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。