亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

spark菜鳥教程 spark項目實戰(zhàn)代碼( 二 )


不包含任何業(yè)務邏輯不依賴其他模塊相關工具保持單例1.3 context模塊Spark或者其他程序 執(zhí)行入口,負責初始化各種計算引擎的環(huán)境變量 。
系統(tǒng) 全局配置(conf)與腳本(bin) 集中管理依賴server、api、common程序關鍵點需要打印日志以便后續(xù)debug使用1.4 server模塊整個項目中整合了業(yè)務邏輯調用、數據源讀寫等操作的模塊,需求簡單的情況下可以直接集成到 context 中 。
該模塊中根據不同的接口操作類,還劃分了 dal、service與manager三個包 。
1.4.1 dal包
主要是對數據進行操作,如讀寫常用的庫:Hive、MySQL、HBase;以及讀寫文件系統(tǒng):HDFS 。
dal中的所有使用都由接口來定義,不同的接口實現使用不同的應用框架API,如Spark、Flink應該為兩個獨立的dal實現,在后續(xù)service使用過程中可以自由切換 。
需要遵循以下原則:
所有bean對象,定義在dal不得在dal寫各種業(yè)務邏輯、數據清洗邏輯一張表對應一個dal接口、一個bean,對應多個獨立的dao實現不允許在1個dao中同時操作多個表包結構如下:
basic: basic包下主要放一些基礎對象,如BaseDao,所有dao都需要完善 TABLE_NAMEbean: 定義數據源表結構,不同的數據源可以定義在不同的包中,如hive、hbase、mysql等dao: 接口具體實現,用來操作數據表 。如:增刪改查1.4.2 service包
和dao對接,一個service對應一個dao,service的使用都由接口來定義 。
一個service下有兩個實現包:
正常實現包:直接對接dao,簡單處理一些判斷:如參數不合法校驗等 。測試實現包:模擬數據,可以不通過dao獲取,從本地文件生成或代碼中生成 。不同的計算框架有不同的service實現,如spark、flink等(需要傳入其環(huán)境變量) 。
1.4.3 manager包
調用service包實現數據增刪改查調用api模塊進行業(yè)務邏輯組合提供函數接口給context模塊調用執(zhí)行二、代碼框架基于以上項目模塊的劃分,我們可以看到,api、common是 每次都會變化的業(yè)務邏輯和通用屬性的抽取,而 context 是根據業(yè)務需要的計算引擎和運行環(huán)境設置的 執(zhí)行入口 。
以上三個模塊都是 根據業(yè)務需求變化比較大的,而server模塊則是負責對 其他各個模塊的調用與整合,最后通過 manager 提供統(tǒng)一的函數接口給 context 入口調用執(zhí)行 。
所以 server 模塊是這個項目規(guī)范中可以 自動化 起來的重點目標 。
基于這個目標,我們開發(fā)了一個 大數據業(yè)務開發(fā) 基準項目的雛形,開發(fā)人員能夠做到開箱即用,不必再花太多精力在研究計算引擎與各個數據源的接口和API如何調用,專注于業(yè)務邏輯的實現,提升開發(fā)效率 。
項目地址:https://github.com/chubbyjiang/aisql-bigdata-base
使用介紹
org.aisql.bigdata.base.framework 包中提供了幾種常見大數據項目需要用到的數據源 。
framework 以 模塊化項目 的結構提供了 各個數據源基礎的Dao、Service接口與默認實現 。
配合自動化的代碼生成工具,可以一鍵生成 server 模塊的代碼文件直接使用 。
現在我們來看一下規(guī)范+自動化的威力,例如現有 default.t_users 表需要讀取 。
開發(fā)人員僅需要生成代碼文件并復制到項目中,寫代碼如下:
val service = new UsersService//讀取整個表val allRdd:RDD[Users] = service.selectAll()//字段篩選val allRdd:RDD[Users] = service.selectAllWithCols(Seq("name","age"))//條件過濾val allRdd:RDD[Users] = service.selectAllByWhere("age>10")//讀取1000條數據val demoRdd:RDD[Users] = service.selectDemo()//寫入表service.insertInto(demoRDD)service.createTable(demoRDD)是不是 so easy?
其實所做的內容也就是在 server 模塊中封裝了 常用的不同計算引擎對不同數據源的讀寫操作API,并 自動化了 bean、dal、service 三個部分的代碼生成 。


以上關于本文的內容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!

「愛刨根生活網」www.malaban59.cn小編還為您精選了以下內容,希望對您有所幫助: