1. 程式人生 > >Flink分散式快取

Flink分散式快取

官方參考文件地址:https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/index.html#distributed-cache

Flink提供了一個類似於Hadoop的分散式快取,讓並行執行例項的函式可以在本地訪問。這個功能可以被使用來分享外部靜態的資料,例如:機器學習的邏輯迴歸模型等!

快取的使用流程:

 使用ExecutionEnvironment例項對本地的或者遠端的檔案(例如:HDFS上的檔案),為快取檔案指定一個名字註冊該快取檔案!當程式執行時候,Flink會自動將複製檔案或者目錄到所有worker節點的本地檔案系統中
,函式可以根據名字去該節點的本地檔案系統中檢索該檔案!


接下來直接上程式碼:

package com.daxin

import java.io.{FileReader, BufferedReader}

import org.apache.flink.api.common.functions.RichMapFunction
import org.apache.flink.api.scala.ExecutionEnvironment
import org.apache.flink.api.scala._
import org.apache.flink.configuration.Configuration

import scala.collection.mutable.HashMap

/**
  *
  * Created by Daxin on 2017/4/18.
  *
  */
object DistributedCache {

  def main(args: Array[String]) {

    val env = ExecutionEnvironment.getExecutionEnvironment

    //本地IDE執行,快取的是本地檔案,快取檔名字為cahce
    env.registerCachedFile("file:///C://logs//flink", "cache")

    val data = env.fromElements("111", "222", "333")

    val result = data.map(new RichMapFunction[String, String] {


      val map = HashMap[String, String]()

      override def open(parameters: Configuration): Unit = {

        val file = getRuntimeContext.getDistributedCache.getFile("cache")//獲取快取檔案
        //讀取快取檔案內容到HashMap中,這個也可以使用廣播實現
        val br = new BufferedReader(new FileReader(file))
        var line = br.readLine()

        while (line != null) {
          map.put(line, line + "" + line)
          line = br.readLine()
        }

      }

      override def map(value: String): String = {

        map.getOrElse(value, "default") //返回該value在map中的value值,如果不存在key為value的返回預設default

      }
    })

    result.print() //執行作業

  }

}


相關推薦

Flink分散式快取Distributed Cache應用案例實戰-Flink牛刀小試

版權宣告:本套技術專欄是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。版權宣告:禁止轉載,歡迎學習。QQ郵箱地址:[email protected],如有任何問題,可隨時聯絡。 1 分散式快取

Flink分散式快取

官方參考文件地址:https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/batch/index.html#distribute

Flink Distributed Cache 分散式快取

Flink提供了一個分散式快取,類似於hadoop,可以使使用者在並行函式中很方便的讀取本地檔案。此功能可用於共享檔案,包含靜態的外部資料,例如字典或者machine-learned迴歸模型。 此快取的工作機制如下:程式註冊一個檔案或者目錄(本地或者遠端檔案系統,例如hdf

【雲星資料---Apache Flink實戰系列(精品版)】:Apache Flink高階特性與高階應用015-Flink中廣播變數和分散式快取001

1.flink中的廣播變數 flink支援將變數廣播到worker上,以供程式運算使用。 執行程式 package code.book.batch.sinksource.scala i

《深入分散式快取 》第4章Ehcache 與guava cache

一 序    本文屬於《深入分散式快取 》讀書筆記,第一章:快取為王主要介紹快取概念,以及引入快取的背景:提升使用者體驗。還介紹了快取的分類,第二章主要介紹分散式理論。個人覺得第二章可以去掉,畢竟是泛泛的介紹。還是專門去看有主題的書比較好,比如《<從PAXOS

redis→分散式快取

簡介  1. redis 是什麼?  REmote DIctionary Server(遠端字典伺服器)  是完全開源免費的,用 C 語言編寫的,遵守 BSD 協議,是一個高效能的 (key/value)分散式記憶體資料庫,基於記憶體執行並支援

大資料(十三):MapJoin(DistributedCache分散式快取)、資料清理例項與計數器應用

一、在map端表合併(DistributedCache分散式快取) 1.適用場景         適合用於關聯表中有小表的情形。         可以將小表分發到所有的

分散式快取架構設計

零、 題記在高併發場景下,需要通過快取來減少資料庫的壓力,使得大量的訪問進來能夠命中快取,只有少量的需要到資料庫層。由於快取基於記憶體,可支援的併發量遠遠大於基於硬碟的資料庫。所以對於高併發設計,快取的設計是必不可少的一環。一、為什麼要使用快取為什麼要使用快取呢?源於人類的一個夢想,就是多快好省的建設社會

分散式快取:Memcached, Redis, MongoDB區別

分散式快取學習之一:Memcached, Redis, MongoDB區別   Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列代理。   Memcached是一個自由開源的,高效能,分散式記憶體物件快取系統。   MongoDB是一個基

mybatis整合分散式快取框架

什麼是分散式快取 為了提高系統的併發效能,通常會對系統進行分散式部署(如叢集部署方式) 如上圖,伺服器1上的mybatis的二級快取位於伺服器1上,伺服器2上的mybatis的二級快取位於伺服器2上。 所以如果不使用分散式快取,快取的資料就會在各個伺服器上單獨儲存,因此,需

分散式快取學習筆記

分散式快取 1. 開場白 1.1 為啥在專案裡要用快取呢? 用快取,主要是倆用途,高效能和高併發 1)高效能 假設這麼個場景,你有個操作,一個請求過來,吭哧吭哧各種亂七八糟操作mysql,半天查出來一個結果,耗時600ms。但是這個結果可能接下來幾個小時都不會變了,或者變

JAVA架構師系列課程分散式快取技術Redis權威指南

課程目標 本課程從0基礎開始,對redis的方方面面進行細粒度的講解:包括基礎操作、高階命令、各種叢集模式、動態增減節點,結合lua使用,實現搶紅包等應用場景。 適用人群 java程式設計師、技術主管、架構師、技術總監 課程簡介 基礎部分: 1.x NOSQL(Redis)簡介、Redis安裝部署與

分散式快取學習之一:Memcached, Redis, MongoDB區別

Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列代理。   Memcached是一個自由開源的,高效能,分散式記憶體物件快取系統。   MongoDB是一個基於分散式檔案儲存的資料庫,文件型的非關係型資料庫,與上面兩者不同。 &nbs

搭建linux伺服器叢集,簡單實現,負載均衡,動靜分離,資料主從複製,分散式快取,共享session回話。

負載均衡方案: nignx  應用層負載均衡      優點:配置簡單 缺點:均衡效能一般 有流量消耗  基於反向代理 LVS    網路層負載均衡 優點:配置複雜 缺點:作

分散式快取小結

一 分散式快取特性 1) 高效能:當傳統資料庫面臨大規模資料訪問時,磁碟I/O 往往成為效能瓶頸,從而導致過高的響應延遲.分散式快取將高速記憶體作為資料物件的儲存介質,資料以key/value 形式儲存,理想情況下可以獲得DRAM 級的讀寫效能;2) 動態擴充套件性:支援彈性擴充套件,通過動態增加或減少節點

分散式快取技術原理 淺析 - 20181120

一.引言 快取是 分散式系統 中重要元件,主要解決資料高併發,大資料場景下,熱點資料訪問的效能安全問題,提供高效能的資料快速訪問。 快取的原理:將資料放到更快的儲存中、將資料快取到離應用最近的位置、將資料快取到離使用者最近的位置。 二.快取的流程(淺談) 1.

Java分散式快取這匹“野馬”,你駕馭得了嗎?

俗話說得好,工欲善其事,必先利其器,有了好的工具肯定得知道如何用好這些工具,本篇將分為如下幾個方面介紹如何利用好快取: 你真的需要快取嗎 如何選擇合適的快取 多級快取 快取更新 快取挖坑三劍客 快取汙染 序列化 GC調優 快取的監控 一款好的框架 總結

Java分散式快取這匹“野馬”,你駕馭得了嗎?

俗話說得好,工欲善其事,必先利其器,有了好的工具肯定得知道如何用好這些工具,本篇將分為如下幾個方面介紹如何利用好快取: 你真的需要快取嗎 如何選擇合適的快取 多級快取 快取更新 快取挖坑三劍客 快取汙染 序列化 GC調優 快取的監控 一款好的框架 總結

分散式快取Redis之HyperLogLog

寫在前面   基數估計演算法就是使用準確性換取空間。 為了說明這一點,我們用三種不同的計算方法統計所有莎士比亞作品中不同單詞的數量。請注意,我們的輸入資料集增加了額外的資料以致比問題的參考基數更高。 這三種技術是:Java HashSet、Linear Probabil

分散式快取Redis之持久化

寫在前面 Redis 可以持久化,當做Cache時持久化的意義在哪?   持久化的意思就是說伺服器重啟之後,快取依然存在,記憶體型別的快取,伺服器重啟後就不存在了。比如使用持久化的方案做登入Session,伺服器重啟後用戶不用再次登入,而一般記憶體方案需要再次登入。