API-adatok felhasználása a Kafka-ba

Lépésenkénti útmutató tartalom felvételéhez egy HTTP kérés vagy REST API válasz a Kafka

ba (2020. december 6.)

Fotó: EJ Strat on Unsplash

A mai nyílt forráskódú közegben általánossá vált, hogy az adatokat API-k segítségével könnyen elérhetővé tegyük. Az olyan vállalatok, mint a Spotify és a Twitter, az REST API -kon keresztül teszik közzé elemzésre rendelkezésre álló adataik egy részét. Ez egyre népszerűbbé teszi az adatok HTTP-kérésen vagy REST API-n keresztül történő beszerzését. Annak érdekében, hogy ezeket az adatokat egy hatékony adatelemző platformon elérhetővé tegyék, a felhasználóknak valamilyen csővezetéket kell megépíteniük az adatok továbbításához a forrásuktól a kívánt elemzési platformig. Az Apache Kafka rugalmas és hatékony módszer az adatok megszerzésére.

Az Apache Kafka egy nyílt forráskódú, elosztott esemény streaming platform, amelyet magas -teljesítményű adatcsatornák, adatfolyam-analitika, adatintegráció és a kritikus fontosságú alkalmazások.

Ez a jegyzetfüzet áttekintést nyújt a válasz tartalmának közzétételéről egy HTTP kérés vagy REST API és a Kafka között. Itt feltételezzük, hogy a Kafka-szolgáltatást egy dokkoló konténerben pörgették fel. A Docker egy platform az alkalmazások fejlesztésére, szállítására és futtatására. A dokkolóról itt olvashat bővebben .

1. lépés: Olvassa el a REST API válasz / HTTP válasz tartalmát egy JSON fájlba a következő paranccsal.

A Curl egy parancs az adatok megszerzésére vagy küldésére az URL szintaxisa segítségével, bármilyen a támogatott protokollok közül. Néhány támogatott protokoll a HTTP, HTTPS, FTP, IMAP, POP3, SCP, SFTP, SMTP, TFTP, TELNET, LDAP vagy FILE.

Hozzáadjuk a beállításokat:

  • -L (érvényes HTTP-re és HTTPS-re) annak érdekében, hogy a göndör újból elkészíthesse a kérést az új helyen, ha a szerver arról számol be, hogy a kért oldal más helyre költözött (Hely: fejléc és 3XX válasz jelzi) kód). Hitelesítés használata esetén a curl csak a kezdeti gazdagépnek küldi el a hitelesítő adatait. Ha az átirányítás egy másik gazdagépre veszi a göndörítést, akkor nem fogja tudni elfogni a felhasználó + jelszót. Korlátozhatja a követendő átirányítások számát a – max-redirs opció használatával.
  • -o assessment-kísérletek-nested.json, hogy kimenetet írjon ebbe a fájlba stdout helyett
  • Ezután megadtuk az https://goo.gl/ME6hjp URL-t, amelyről adatokat akarunk kapni.
curl -L -o assessment-attempts-nested.json 
https://goo.gl/ME6hjp

Az eredmény így néz ki:

\% Total \% Received \% Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0100 9096k 100 9096k 0 0 14.6M 0 --:--:-- --:--:-- --:--:-- 14.6M

2. lépés : A jq használatával módosíthatja az 1. lépésben a curl kimenetével feltöltött JSON fájlban olvasott módját, és tesztelje ezt macskával.

A macska a parancs összefűzi a fájlokat és kinyomtatja a szabványos kimenetet.

Megadjuk a fájl (ok) nevét (neveit), amelyeket összefűzni szeretnénk, vagy a standard bemenetet a standard kimenetre. FÁJL nélkül, vagy ha a FÁJL -, beolvassa a szokásos bemenetet.

A | A (pipe) lehetővé teszi, hogy az 1. parancs normál kimenete (a | előtti parancs) legyen a 2. parancs (a | utáni parancs) standard bemenete. Összefűzött eredményünk tehát a jq ‘bemeneteként működik.’

A jq könnyű és rugalmas parancssori JSON processzor. Segítségével szeletelhet, szűrhet és feltérképezhet, valamint könnyedén átalakíthatja a strukturált adatokat. Az ’. []’ Feltekeri a tömböt, és vonalként / sorként kihúzza a tömb indexét, és a -c megőrzi a színt a jq formázástól. Tehát a jq . [] -C lehetővé teszi számunkra, hogy a JSON tömb minden egyes indexét új sorra válasszuk szét, és megőrizzük a jq által biztosított formázás színét.

cat assessment-attempts-nested.json | jq ".[]" -c

3. lépés: Megtekintheti, hogy hány sort (melyikből hány üzenetet teszünk közzé a Kafka számára) ) eredménye a 2. lépésben található parancsunkból származik.

A | hozzáadása A wc -l segítségével átvehetjük a standard kimenetet a 2. lépésben szereplő parancsból, amely a jq formázott és kivont sorok a JSON tömbből a következő parancsba bemenetként. A következő parancs a wc -l. A wc kinyomtatja az újsorszámot, mert a -l opcióként megadta az új sort.

cat assessment-attempts-nested.json | jq ".[]" -c | wc -l

Az eredménynek a sorok számának kell lennie, például:

3280

4. lépés: Itt azt vesszük, amit kaptunk a 2. lépésben, és tegye közzé ezt a Kafka-témában „értékelési kísérletek”. Itt a docker-compose-t fogjuk használni, feltéve, hogy a Kafka szolgáltatás a Docker használatával indul.

A docker-compose exec parancsot futtat a megadott tárolóban, itt a container1.

Az általunk futtatott parancs a bash -c “cat assessment-kísérletek-beágyazott.json | jq ’.[] ’-C | kafkacat -P -b kafka: 29092 -t értékelési kísérletek & & echo 3280 üzenetet készítettek. “

  • a bash parancsértelmező elindítása a tárolóban
  • -c egy olyan lehetőség, amely lehetővé teszi a parancsok elolvasását a következő karakterláncból
  • A következő karakterlánc először összefűzi az Assessment-kísérletek-nested.json fájl tartalmát szabványos kimenetbe.
  • Ezután a standard kimenetet standard bemenetként átadja a következő parancsnak: jq . [] -c, amely megkapja a kimenet összes tartalmát (formátumban, mint a JSON), és kivonja a tömb minden indexét egy új sorba.
  • Ennek a szabványos kimenetét standard bemenetként továbbítja a következő parancshoz: kafkacat – P -b kafka: 29092 -t értékelési kísérletek & & echo 3280 üzenetet készítettek. “
  • A kafkacat -P termelői módban indítja el a segédprogramot. Ebben a kafkacat a standard bemenetről (stdin) olvassa az üzeneteket.
  • -b kafka: 29092 a Kafka bróker megadására szolgál, amelynek neve csak Kafka a gazdagéppel – mindkettő konfigurálva van a docker-compose.yml
  • -t értékelési kísérleteket használjuk annak a témakörnek a megadására, amelyet közzé akarunk tenni
  • & A & egy olyan parancs felsorolására szolgál, amelyet végre akarunk hajtani, miután a végrehajtás sikeresen befejeződött.
  • echo Produced 3280 messages. egy olyan üzenet, amelyet mi meg akarja jeleníteni, ha a Kafkának való közzététel előző parancsát sikeresen végrehajtották. 3280-at tudtunk a 3. lépéstől.
docker-compose exec container1 bash -c "cat assessment-attempts-nested.json | jq ".[]" -c | kafkacat -P -b kafka:29092 -t assessment-attempts && echo "Produced 3280 messages.""

Az eredménynek a következőképpen kell kinéznie:

Produced 3280 messages.

Hivatkozások

  1. https://kafka.apache.org/
  2. https://docs.docker.com/get-started/overview/
  3. https://www.geeksforgeeks.org/curl-command-in-linux-with-examples/
  4. https: / /stedolan.github.io/jq/