欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Flume接入Hive數(shù)倉的搭建流程

這篇文章主要講解了“Flume接入Hive數(shù)倉的搭建流程”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Flume接入Hive數(shù)倉的搭建流程”吧!

10年的永泰網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整永泰建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“永泰網(wǎng)站設(shè)計”,“永泰網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

實時流接入數(shù)倉,基本在大公司都會有,在Flume1.8以后支持taildir source, 其有以下幾個特點,而被廣泛使用:

  1. 使用正則表達式匹配目錄中的文件名

  2. 監(jiān)控的文件中,一旦有數(shù)據(jù)寫入,F(xiàn)lume就會將信息寫入到指定的Sink

  3. 高可靠,不會丟失數(shù)據(jù)

  4. 不會對跟蹤文件有任何處理,不會重命名也不會刪除

  5. 不支持Windows,不能讀二進制文件。支持按行讀取文本文件

本文以開源Flume流為例,介紹流接入HDFS ,后面在其上面建立ods層外表。

1.1 taildir source配置

a1.sources.r1.type = TAILDIR a1.sources.r1.positionFile = /opt/hoult/servers/conf/startlog_position.json a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 =/opt/hoult/servers/logs/start/.*log

1.2 hdfs sink 配置

a1.sinks.k1.type = hdfs a1.sinks.k1.hdfs.path = /user/data/logs/start/logs/start/%Y-%m-%d/ a1.sinks.k1.hdfs.filePrefix = startlog. # 配置文件滾動方式(文件大小32M) a1.sinks.k1.hdfs.rollSize = 33554432 a1.sinks.k1.hdfs.rollCount = 0 a1.sinks.k1.hdfs.rollInterval = 0 a1.sinks.k1.hdfs.idleTimeout = 0 a1.sinks.k1.hdfs.minBlockReplicas = 1 # 向hdfs上刷新的event的個數(shù) a1.sinks.k1.hdfs.batchSize = 100 # 使用本地時間 a1.sinks.k1.hdfs.useLocalTimeStamp = true

1.3 Agent的配置

a1.sources = r1 a1.sinks = k1 a1.channels = c1 # taildir source a1.sources.r1.type = TAILDIR a1.sources.r1.positionFile = /opt/hoult/servers/conf/startlog_position.json a1.sources.r1.filegroups = f1 a1.sources.r1.filegroups.f1 = /user/data/logs/start/.*log # memorychannel a1.channels.c1.type = memory a1.channels.c1.capacity = 100000 a1.channels.c1.transactionCapacity = 2000 # hdfs sink a1.sinks.k1.type = hdfs a1.sinks.k1.hdfs.path = /opt/hoult/servers/logs/start/%Y-%m-%d/ a1.sinks.k1.hdfs.filePrefix = startlog. # 配置文件滾動方式(文件大小32M) a1.sinks.k1.hdfs.rollSize = 33554432 a1.sinks.k1.hdfs.rollCount = 0 a1.sinks.k1.hdfs.rollInterval = 0 a1.sinks.k1.hdfs.idleTimeout = 0 a1.sinks.k1.hdfs.minBlockReplicas = 1 # 向hdfs上刷新的event的個數(shù) a1.sinks.k1.hdfs.batchSize = 1000 # 使用本地時間 a1.sinks.k1.hdfs.useLocalTimeStamp = true # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

/opt/hoult/servers/conf/flume-log2hdfs.conf

1.4 啟動

flume-ng agent --conf-file /opt/hoult/servers/conf/flume-log2hdfs.conf -name a1 -Dflume.roog.logger=INFO,console  export JAVA_OPTS="-Xms4000m -Xmx4000m -Dcom.sun.management.jmxremote" # 要想使配置文件生效,還要在命令行中指定配置文件目錄 flume-ng agent --conf /opt/hoult/servers/flume-1.9.0/conf --conf-file /opt/hoult/servers/conf/flume-log2hdfs.conf -name a1 -Dflume.roog.logger=INFO,console

要$FLUME_HOME/conf/flume-env.sh加下面的參數(shù),否則會報錯誤如下:

Flume接入Hive數(shù)倉的搭建流程

1.5 使用自定義攔截器解決Flume Agent替換本地時間為日志里面的時間戳

使用netcat source → logger sink來測試

# a1是agent的名稱。source、channel、sink的名稱分別為:r1 c1 k1 a1.sources = r1 a1.channels = c1 a1.sinks = k1 # source a1.sources.r1.type = netcat a1.sources.r1.bind = linux121 a1.sources.r1.port = 9999 a1.sources.r1.interceptors = i1 a1.sources.r1.interceptors.i1.type = com.hoult.flume.CustomerInterceptor$Builder # channel a1.channels.c1.type = memory a1.channels.c1.capacity = 10000 a1.channels.c1.transactionCapacity = 100 # sink a1.sinks.k1.type = logger # source、channel、sink之間的關(guān)系 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

攔截器主要代碼如下:

public class CustomerInterceptor implements Interceptor {     private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");      @Override     public void initialize() {      }      @Override     public Event intercept(Event event) {         // 獲得body的內(nèi)容         String eventBody = new String(event.getBody(), Charsets.UTF_8);         // 獲取header的內(nèi)容         Map<String, String> headerMap = event.getHeaders();         final String[] bodyArr = eventBody.split("\\s+");         try {             String jsonStr = bodyArr[6];             if (Strings.isNullOrEmpty(jsonStr)) {                 return null;             }             // 將 string 轉(zhuǎn)成 json 對象             JSONObject jsonObject = JSON.parseObject(jsonStr);             String timestampStr = jsonObject.getString("time");             //將timestamp 轉(zhuǎn)為時間日期類型(格式 :yyyyMMdd)             long timeStamp = Long.valueOf(timestampStr);             String date = formatter.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(timeStamp), ZoneId.systemDefault()));             headerMap.put("logtime", date);             event.setHeaders(headerMap);         } catch (Exception e) {             headerMap.put("logtime", "unknown");             event.setHeaders(headerMap);         }         return event;      }      @Override     public List<Event> intercept(List<Event> events) {         List<Event> out = new ArrayList<>();         for (Event event : events) {             Event outEvent = intercept(event);             if (outEvent != null) {                 out.add(outEvent);             }         }         return out;     }      @Override     public void close() {      }      public static class Builder implements Interceptor.Builder {         @Override         public Interceptor build() {             return new CustomerInterceptor();         }          @Override         public void configure(Context context) {         }     }

啟動

flume-ng agent --conf /opt/hoult/servers/flume-1.9.0/conf --conf-file /opt/hoult/servers/conf/flume-test.conf -name a1 -Dflume.roog.logger=INFO,console ## 測試 telnet linux121 9999

感謝各位的閱讀,以上就是“Flume接入Hive數(shù)倉的搭建流程”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Flume接入Hive數(shù)倉的搭建流程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

文章標(biāo)題:Flume接入Hive數(shù)倉的搭建流程
分享地址:http://chinadenli.net/article16/pehjdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、微信公眾號、企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)企業(yè)建站、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
黄色在线免费高清观看| 中字幕一区二区三区久久蜜桃 | 91欧美亚洲视频在线| 日韩精品区欧美在线一区| 国产在线小视频你懂的| 精品日韩视频在线观看| 日本加勒比在线播放一区| 日韩毛片视频免费观看| 欧美大胆女人的大胆人体| 日本福利写真在线观看| av一区二区三区天堂| 欧洲偷拍视频中文字幕| 欧美日韩亚洲国产av| 91日韩欧美国产视频| 久久精品国产99精品亚洲| 国产欧美日韩不卡在线视频| 国产色第一区不卡高清| 激情中文字幕在线观看| 精品人妻一区二区三区四区久久 | 精品亚洲av一区二区三区| 欧美精品在线观看国产| 91日韩在线观看你懂的| 美日韩一区二区精品系列| 国产黄色高清内射熟女视频| 老外那个很粗大做起来很爽| 国产自拍欧美日韩在线观看| 日本高清视频在线观看不卡| 中文字幕在线五月婷婷| 欧美精品亚洲精品日韩精品| 99久久人妻精品免费一区| 日韩在线中文字幕不卡| 成人精品网一区二区三区| 少妇被粗大进猛进出处故事| 国产丝袜女优一区二区三区| 国内精品美女福利av在线| 欧美午夜伦理在线观看| 亚洲伊人久久精品国产| 欧美日韩国产综合特黄| 国产又粗又猛又长又大| 婷婷九月在线中文字幕| 亚洲视频偷拍福利来袭|