2015-11-13 74 views
1

我是Flume的新手,並致力於使用HTTP源發送flume事件。我能夠成功地發送一個事件如果有效載荷被格式化爲波紋管:發送Flume JSONHandler正文作爲JSONObject

[{ 
"headers" : { 
     "timestamp" : "434324343", 
     "host" : "random_host.example.com" 
     }, 
"body" : "random_body" 
}] 

然而,到頁眉類似我需要發送的身體作爲一個JSONObject,而不是一個字符串。例如:

[{ 
"headers" : { 
     "timestamp" : "434324343", 
     "host" : "random_host.example.com" 
     }, 
"body" : { 
     "value1" : "100", 
     "value2" : "101" 
     } 
}] 

我該如何操作?

在此先感謝。

+0

你在使用哪個接收器?有一些允許你序列化標題和正文。示例:http://stackoverflow.com/questions/33379438/flume-is-there-a-way-to-store-avro-event-header-body-into-hdfs和http://stackoverflow.com/questions/ 27834950/IS-IT-可能對寫水槽報頭到HDFS散熱器和拖放最體 – frb

回答

0

根據我的konwing,我們不需要太在意是否發送JSONObject,我們發送了一個Json字符串(可以解析爲JSONObject)。您可以使用許多工具(如GSon/FastJson)將字符串轉換爲Array/Map或JSONObject。下面是一個例子:

下面是一個例子:

Gson gson = new Gson();
String body =「{\」timestamp \「:\」434324343 \「,\」host \「:\」random_host.example.com \「}」;

Map map = gson.fromJson(body,new TypeToken>(){} .getType());