Używam konwersji procesora Avrotojson, aby przekonwertować Avro do JSON, a następnie podzielić JSON z wyrażeniem $

W przypadku braku pojedynczego elementu JSON i nie ma tablicy.

Czy ktoś może pomóc w wyrażeniu regularnym, aby wspierać zarówno tablicę, jak i pojedynczy element.

0
Siddharth Chaurasia 26 luty 2019, 22:49

2 odpowiedzi

Najlepsza odpowiedź

Możesz spróbować użyć procesora ConvertreCord z AvroRoreader i JSONWRITRITRITER, a następnie użyj Splittrecord z licznikiem rekordu 1.

Możliwe jest również uniknięcie podziału poszczególnych zapisów. Zazwyczaj odbywa się w celu manipulowania każdemu rekordu, ale z procesorami rekordowymi można zazwyczaj manipulować ich na miejscu, co znacznie poprawiając wydajność, nie dzieląc się.

3
Bryan Bende 26 luty 2019, 20:11

Cóż, nie masz nic do dzielenia się w jednym elemencie. Jeśli chcesz uniknąć awarii pojedynczych elementów, możesz użyć ConvertRecord zamiast ConvertAvroToJson.

Różnica polega na tym, że ConvertRecord zapewni Ci atrybut record.count, co mówi, ile rekordów jest zawartych w tym przepływomierze (a także bardziej ogólnym przepływem).

Pozwoli to na umieszczenie środkowego procesora (RouteOnAttribute) między ConvertRecord i SplitJSON.

Więc możesz go skonfigurować jako takie:

Strategia routingu = trasa do "dopasowanego", jeśli wszystkie pasuje

mecz (właściwość dynamiczna) = $ {Record.Count: Równa (1)}

Następnie, przelew podłączyć relację matched do procesora umieszczonego po swoim SplitJSON i podłączyć unmatched do procesora {x3}}. W ten sposób, jeśli jest pojedynczy rekord (co nie powinno wymagać podziału), uniknie to procesora SplitJSON.

1
Ben Yaakobi 27 luty 2019, 07:41