मैं Flume
में HTTPSource
उपयोग कर रहा हूँ HDFS में JSON सम्मिलित करने के लिए कैसे:इस प्रकार का उपयोग कर <code>json</code> प्रारूप में <em>पोस्ट</em> घटनाओं प्राप्त करने के लिए सही ढंग से Flume
{"username":"xyz","password":"123"}
मेरा प्रश्न है: मैं के स्रोत को संशोधित करने के है
[{
"headers" : {
"timestamp" : "434324343",
"host" : "random_host.example.com"
},
"body" : "{"username":"xyz","password":"123"}"
}]
यह यह करने के लिए सबसे अच्छा तरीका है: घटनाओं (मैं एक है कि Flume को JSON
भेज रहा है मतलब) तो JSON, निम्न स्वरूप है? या मैं इसे हर जगह संशोधित कर सकता हूं?
flume agent
के लिए मेरे conf
फ़ाइल है:
## Componentes
SomeAgent.sources = SomeHTTP
SomeAgent.channels = MemChannel
SomeAgent.sinks = SomeHDFS
## Fuente e Interceptores
SomeAgent.sources.SomeHTTP.type = http
SomeAgent.sources.SomeHTTP.port = 5140
SomeAgent.sources.SomeHTTP.handler = org.apache.flume.source.http.JSONHandler
SomeAgent.sources.SomeHTTP.channels = MemChannel
SomeAgent.sources.SomeHTTP.interceptors = i1 i2
## Interceptores
SomeAgent.sources.SomeHTTP.interceptors.i1.type = timestamp
SomeAgent.sources.SomeHTTP.interceptors.i2.type = host
SomeAgent.sources.SomeHTTP.interceptors.i2.hostHeader = hostname
## Canal
SomeAgent.channels.MemChannel.type = memory
SomeAgent.channels.MemChannel.capacity = 10000
SomeAgent.channels.MemChannel.transactionCapacity = 1000
## Sumidero
SomeAgent.sinks.SomeHDFS.type = hdfs
SomeAgent.sinks.SomeHDFS.channel = MemChannel
SomeAgent.sinks.SomeHDFS.hdfs.path = /raw/logs/%Y-%m-%d
SomeAgent.sinks.SomeHDFS.hdfs.fileType = DataStream
SomeAgent.sinks.SomeHDFS.hdfs.filePrefix = SomeLogs-
SomeAgent.sinks.SomeHDFS.hdfs.writeFormat = Text
SomeAgent.sinks.SomeHDFS.hdfs.batchSize = 100
SomeAgent.sinks.SomeHDFS.hdfs.rollSize = 0
SomeAgent.sinks.SomeHDFS.hdfs.rollCount = 10000
SomeAgent.sinks.SomeHDFS.hdfs.rollInterval = 600
SomeAgent.sinks.SomeHDFS.hdfs.useLocalTimeStamp = true
रनिंग cat
की hadoop fs
$ hadoop fs -ls -R /raw/logs/somes
drwxr-xr-x - flume-agent supergroup 0 2015-06-16 12:43 /raw/logs/arquimedes/2015-06-16
-rw-r--r-- 3 flume-agent supergroup 3814 2015-06-16 12:33 /raw/logs/arquimedes/2015-06-16/SomeLogs.1434471803369
-rw-r--r-- 3 flume-agent supergroup 3719 2015-06-16 12:43 /raw/logs/arquimedes/2015-06-16/SomeLogs.1434472404774
$ hadoop fs -cat /raw/logs/somes/2015-06-16/SomeLogs.1434471803369 | head
$
(आप सही तरीके से लग रहे हैं, खाली लाइनें)
तो अब मैं फ़ाइल को देखो (उदाहरण के लिए HUE
के बाइनरी व्यू का उपयोग करके):
0000000: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ................
0000010: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ................
0000020: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a ................
मुझे यह लिंक मिला है (http://grokbase.com/t/flume/user/128nspvnfg/can-hdfssink-write-headers-as-well) कह रहा है कि HDFSSink के लिए cuatom serializers केवल ' फ़ाइल टाइप = संपीड़ित स्ट्रीम 'या' डेटास्ट्रीम '। मुझे नहीं पता कि यह वर्तमान में 'अनुक्रमफाइल' के लिए तय है या नहीं। – frb
आपकी प्रतिक्रिया के लिए धन्यवाद धन्यवाद, मैंने अभी कॉन्फ़िगरेशन फ़ाइल चिपकाई है, लेकिन जब मैं देखता हूं ('हैडोप एफएस-कैट/कच्चे/लॉग/2015-06-15/कुछलॉग -1414410388430' का उपयोग करके) मुझे कुछ भी नहीं दिखाई देता है (ए बहुत सी खाली गुच्छा लाइनें, जो मुझे संदेह है बाइनरी में हैं) क्या आप त्रुटि देख सकते हैं? – nanounanue
मैंने इस सवाल में बाइनरी के रूप में आउटपुट जोड़ा ... कुछ भी लॉग इन नहीं कर रहा है: (' – nanounanue