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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Apache Storm和Kite SDK Morphlines的可配置ETL处理

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Apache Storm和Kite SDK Morphlines的可配置ETL处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從我擔任軟件工程師的第一天起,我總是聽到很多方面的相同要求:

“ 我們希望所有內容都可配置,我們希望在運行時更改所有內容,我們希望有一個可視化工具來應用所有這些邏輯,以便非開發人員使用和配置我們的應用程序。 ”

我也喜歡這種通用范圍,但是眾所周知,軟件系統的適應性不強,客戶的需求也不穩定。

在過去的幾年中,我們已經使用傳統的框架/技術(JMX,分布式緩存,Spring或JEE等)構建了此類可配置應用程序(并非100%可配置)。

近年來,我們的體系結構中還必須包含一個附加概念,這就是大數據 (或3V或4V或任何更合適的詞)的概念。 這個新概念淘汰了我們熟悉并在舊的3層應用程序中應用的各種解決方案或變通方法。

有趣的是,我很多次都和十年前一樣。 這是軟件開發的規則,它永遠不會結束,因此個人才能和新冒險也永遠不會結束:-)

主要問題仍然是相同的,即如何構建可配置的ETL分布式應用程序

因此,我建立了一個小型的適應性強的解決方案,該解決方案在許多用例中可能會有所幫助。 我在大數據世界中使用了3種常用工具: JavaApache StormKite SDK Morplines 。 Java是主要的編程語言, Apache Storm是分布式流處理引擎,而Kite SDK Morphlines是可配置的ETL引擎。

風箏SDK Morplines

從其描述復制而來: Morphlines是一個開源框架,它減少了構建和更改Hadoop ETL流處理應用程序所需的時間和精力,該應用程序可將數據提取,轉換并加載到Apache Solr,HBase,HDFS,Enterprise Data Warehouse或Analytic Online Dashboards中。 morphline是一個豐富的配置文件,可以輕松定義一個轉換鏈,該轉換鏈可以使用來自任何類型數據源的任何類型的數據,處理數據并將結果加載到Hadoop組件中。 它用簡單的配置步驟代替了Java編程,并相應地減少了與開發和維護定制ETL項目相關的成本和集成工作。

除了內置命令外 ,您還可以輕松實現自己的命令 ,并在嗎啉配置文件中使用它。

示例Morphline配置讀取一個JSON字符串,解析它,然后只記錄一個特定的JSON元素:

morphlines : [{id : json_terminal_logimportCommands : ["org.kitesdk.**"]commands : [# read the JSON blob{ readJson: {} }# extract JSON objects into head fields{ extractJsonPaths {flatten: truepaths: {name: /nameage: /age}} }# log data{ logInfo {format : "name: {}, record: {}"args : ["@{name}", "@{}"]}}] }]

風暴變身螺栓

為了在Storm中使用Morphlines,我實現了一個自定義MorphlinesBolt 。 該螺栓的主要職責是:

  • 通過配置文件初始化Morphlines處理程序
  • 初始化映射說明:
    a)從元組到嗎啉輸入,以及
    b)從Morphline輸出到新的輸出元組
  • 使用已初始化的Morplines上下文處理每個傳入事件
  • 如果Bolt不是Terminal ,則使用提供的Mapper (類型“ b”),使用Morphline執行的輸出發出一個新的Tuple。

簡單的可配置ETL拓撲

為了測試自定義MorphlinesBolt ,我編寫了2個簡單的測試。 在這些測試中,您可以看到MorphlinesBolt是如何初始化的,然后是每次執行的結果。 作為輸入,我使用了一個自定義的Spout(RandomJsonTestSpout),它僅每100毫秒發出一次新的JSON字符串(可配置)。

DummyJsonTerminalLogTopology

一個簡單的拓撲 ,該拓撲通過配置文件和每個傳入的元組的執行Morphline處理程序來配置Morphline上下文。 在此拓撲上, MorphlinesBolt被配置為終端螺栓,這意味著對于每個輸入Tuple不會發出新的Tuple。

public class DummyJsonTerminalLogTopology {public static void main(String[] args) throws Exception {Config config = new Config();RandomJsonTestSpout spout = new RandomJsonTestSpout().withComplexJson(false);String2ByteArrayTupleMapper tuppleMapper = new String2ByteArrayTupleMapper();tuppleMapper.configure(CmnStormCons.TUPLE_FIELD_MSG);MorphlinesBolt morphBolt = new MorphlinesBolt().withTupleMapper(tuppleMapper).withMorphlineId("json_terminal_log").withMorphlineConfFile("target/test-classes/morphline_confs/json_terminal_log.conf");TopologyBuilder builder = new TopologyBuilder();builder.setSpout("WORD_SPOUT", spout, 1);builder.setBolt("MORPH_BOLT", morphBolt, 1).shuffleGrouping("WORD_SPOUT");if (args.length == 0) {LocalCluster cluster = new LocalCluster();cluster.submitTopology("MyDummyJsonTerminalLogTopology", config, builder.createTopology());Thread.sleep(10000);cluster.killTopology("MyDummyJsonTerminalLogTopology");cluster.shutdown();System.exit(0);} else if (args.length == 1) {StormSubmitter.submitTopology(args[0], config, builder.createTopology());} else {System.out.println("Usage: DummyJsonTerminalLogTopology <topology_name>");}} }

DummyJson2StringTopology

一個簡單的拓撲 ,該拓撲通過配置文件和每個傳入的元組的執行Morphline處理程序來配置Morphline上下文。 在此拓撲上, MorphlinesBolt被配置為普通螺栓,這意味著對于每個輸入Tuple,它都會發出一個新的Tuple。

public class DummyJson2StringTopology {public static void main(String[] args) throws Exception {Config config = new Config();RandomJsonTestSpout spout = new RandomJsonTestSpout().withComplexJson(false);String2ByteArrayTupleMapper tuppleMapper = new String2ByteArrayTupleMapper();tuppleMapper.configure(CmnStormCons.TUPLE_FIELD_MSG);MorphlinesBolt morphBolt = new MorphlinesBolt().withTupleMapper(tuppleMapper).withMorphlineId("json2string").withMorphlineConfFile("target/test-classes/morphline_confs/json2string.conf")//.withOutputProcessors(Arrays.asList(resultRecordHandlers));.withOutputFields(CmnStormCons.TUPLE_FIELD_MSG).withRecordMapper(RecordHandlerFactory.genDefaultRecordHandler(String.class, new JsonNode2StringResultMapper()));LoggingBolt printBolt = new LoggingBolt().withFields(CmnStormCons.TUPLE_FIELD_MSG);TopologyBuilder builder = new TopologyBuilder();builder.setSpout("WORD_SPOUT", spout, 1);builder.setBolt("MORPH_BOLT", morphBolt, 1).shuffleGrouping("WORD_SPOUT");builder.setBolt("PRINT_BOLT", printBolt, 1).shuffleGrouping("MORPH_BOLT");if (args.length == 0) {LocalCluster cluster = new LocalCluster();cluster.submitTopology("MyDummyJson2StringTopology", config, builder.createTopology());Thread.sleep(10000);cluster.killTopology("MyDummyJson2StringTopology");cluster.shutdown();System.exit(0);} else if (args.length == 1) {StormSubmitter.submitTopology(args[0], config, builder.createTopology());} else {System.out.println("Usage: DummyJson2StringTopology <topology_name>");}} }

最后的想法

MorphlinesBolt可以用作任何可配置ETL“解決方案”的一部分(作為單處理Bolt,作為終端Bolt,作為復雜管道的一部分,等等)。

在github中的示例項目集中,源代碼作為Maven模塊( sv-etl-storm-morphlines )提供。

最好的組合是將MorphlinesBolt與Flux一起使用。 這可能會為您提供完全可配置的ETL拓撲!!!
我還沒有添加為選項,以便保持較少的依賴關系(我可以添加范圍“ test”)。

該模塊不是最終模塊,我將嘗試對其進行改進,因此許多人會在第一個實現中發現各種錯誤。

對于任何其他想法或說明,請寫評論:)

這是我2016年的第一篇文章! 希望您身體健康,思想和行動更好。 一切的第一項美德/價值是人類以及對我們所生活的環境(社會,地球,動物,植物等)的尊重。 所有其他都是次要優先事項,不應破壞優先事項所隱含的內容。 始終牢記最重要的美德,并在您采取的任何行動或思想中考慮它們。

翻譯自: https://www.javacodegeeks.com/2016/01/configurable-etl-processing-using-apache-storm-kite-sdk-morphlines.html

總結

以上是生活随笔為你收集整理的使用Apache Storm和Kite SDK Morphlines的可配置ETL处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩a级在线观看 | 亚洲琪琪 | 99在线视频免费观看 | 国产中文自拍 | 日韩精品中文字幕一区 | 日韩av.com| 日韩羞羞 | japanese国产打屁股网站 | 天堂中文在线最新 | 色桃网 | 国产精品爽爽久久久久久 | 天堂999| 成人做爰69片免费观看 | 成人在线观看免费 | 久久久久久久久久久久久国产 | 亚洲国产日韩欧美一区二区三区 | 美女色呦呦 | 操操操av| 色哥网| 爆操少妇| 午夜片在线观看 | 色热热 | 日韩精品一级 | 99久久精品免费看国产免费软件 | 中文字幕一区在线观看 | 国产91一区二区三区 | 91日韩在线| a级成人毛片 | 福利国产视频 | 国家队动漫免费观看在线观看晨光 | 95视频在线观看 | 国产精品一 | 亚洲精品国产精品国自产网站按摩 | 国产精品99久久久久久www | 午夜伦理视频 | yw视频在线观看 | 天天躁狠狠躁 | 成人区人妻精品一区二 | 国产精品4 | 好吊色在线视频 | 亚洲国产综合在线 | 日韩毛片无码永久免费看 | 国产精品8888 | 九九久久免费视频 | 色婷亚洲 | 亚洲欧洲综合在线 | 日韩精品国产一区二区 | av男人的天堂av | 精品亚洲中文字幕 | 久草国产精品视频 | 黑人高潮一区二区三区在线看 | 欧美一级做| 国产69精品久久久久久久久久 | 国产xxxx孕妇 | 欧美理论片在线观看 | 成人久草 | 亚洲红桃视频 | 四虎在线看片 | 国产精品二三区 | 99精品久久 | 男人的天堂成人 | 中国女人一级一次看片 | 男女洗澡互摸私密部位视频 | 亚洲国产情侣 | 午夜天堂精品 | 色一情一区二区三区 | 亚洲av无码专区在线播放中文 | 蜜桃臀一区二区三区 | 人妻无码久久精品人妻 | a级在线播放 | 中文字幕1区2区3区 www.com黄色片 | av在线一区二区 | 亚洲视频在线视频 | 久久久国产打桩机 | 99精品国产成人一区二区 | 国产一级特黄aaa大片 | 亚洲精品污一区二区三区 | 国产精品成人免费精品自在线观看 | 久久国产精品久久精品国产 | 牛人盗摄一区二区三区视频 | 日本精品一二区 | 成人激情自拍 | 亚洲激情中文字幕 | 亚洲精品高清视频 | 精品人妻无码一区二区 | 国产人妻精品午夜福利免费 | 五月激情婷婷综合 | 国产艳情片 | 成人高清免费观看 | 日本中文字幕在线观看视频 | 国产成年妇视频 | 国产无遮挡呻吟娇喘视频 | 欧美日韩一区二区中文字幕 | 午夜成人影片 | 久草午夜 | 人与性动交zzzzbbbb | 德国经典free性复古xxxx | 波多野结衣精品 | 美乳人妻一区二区三区 |