簡體   English   中英

消耗來自kafka主題的json值並將其寫入並使用JQ將其格式化為csv文件

[英]Consuming json values from a kafka topic and writing them and formatting them in a csv file using JQ

我正在嘗試將cafka主題中的鍵和值寫入一個csv文件中。 我已經能夠選擇所需的鍵和值,但無法將它們按行分開(行中的三個值用逗號分隔)。

這是我從kafka主題中使用的兩個json記錄的示例,沒有進行任何過濾。 我使用的命令是:

./kafka-run-class.sh kafka.tools.ConsoleConsumer --bootstrap-server kafka1.example.net:9092 --topic prod.example.v1 --max-messages 2 | jq -r '. '

{ "count": "0", "source": 3, "lastModified": "2018-03-09T21:03:54.039Z", "isBusiness": false, "countryCode": " MX", "phone": "52/4446789864" } { "count": "0", "source": 3, "lastModified": "2018-03-09T21:03:54.039Z", "isBusiness": false, "countryCode": " GB", "phone": "44/0187567846" }

我嘗試使用此命令,但是每個值都放在其自己的行中:

./kafka-run-class.sh kafka.tools.ConsoleConsumer --bootstrap-server kafka1.example.net:9092 --topic prod.example.v1 --max-messages 3 | jq -r ' .isBusiness, .countryCode, .phone ' > file.csv

理想的輸出為:

false, MX, 52/4446789864
false, GB, 44/0187567846
true, BE, 32/8745687645
jq -r '[.isBusiness, .countryCode, .phone] | @csv'

產生CSV:

false," MX","52/4446789864"
false," GB","44/0187567846"

過濾器:

"\(.isBusiness), \(.countryCode), \(.phone)"

產生

false,  MX, 52/4446789864
false,  GB, 44/0187567846

您可能想要“修剪”字符串值,例如使用:

def trim: sub("^ +";"") | sub(" +$";"");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM