2017-02-27 61 views
1

我試圖讓我的頭在從Avro和JSON提取屬性。我可以使用EvaluateJsonPath處理器從JSON中提取屬性。我試圖在Avro上做同樣的事情,但我不確定它是否可以實現。Apache Nifi - 從Avro提取屬性

這裏是我的流量,ExecuteSQL - >SplitAvro - >UpdateAttribute

UpdateAttribute是我要提取屬性的處理器。請在下面找到UpdateAttribute處理器的快照,

UpdateAttribute Processor COnfiguration

所以,我的基本問題是,我們可以提取屬性形成的Avro?如果是,請爲我提供正確的方法。或者在提取屬性前總是需要使用ConvertAvroToJSON

回答

7

目前,there is no way in NiFi to extract attributes directly from Avro(有像XPath for XML或JsonPath for JSON這樣的not yet an AvroPath),如你所說你可以在提取屬性之前使用ConvertAvroToJSON。我寫了一個用於ExecuteScript處理器的Groovy腳本,它將「Avro path」值作爲動態屬性(每個都以avro.path開頭,其值爲JsonPath),Avro轉換爲JSON在內存中,並要求您下載並指向Avro JAR。如果你感興趣,我可以在這裏發佈它,但真正唯一的優勢是維護Avro中的流文件內容,雖然它可能很煩人,但可以使用ConvertAvroToJson - > EvaluateJsonPath - > ConvertJsonToAvro作爲解決方法。

+0

再次感謝您的幫助。我將使用'ConvertAvroToJson' - >'EvaluateJsonPath' - >'ConvertJsonToAvro'作爲解決方法 – Pons

+0

您是否也可以從JSON內容中提取屬性,然後使用Avro內容將這些屬性合併迴流文件? – Andy

+0

@Andy,我可以使用'EvaluateJSONPath'從JSON中提取屬性。但從未嘗試將屬性與Avro合併。我試圖從Avro和Json中提取屬性。 – Pons