Yep, I'm wondering whether our parser interface should have the ability to
create schema either like that, or well, that, which would be helpful
within Metron as well.

@Otto, the one thing missing from the record reader api, is that if you
don't emit any records at all for a flow file, it errors, which is not
strictly speaking an error, but yeah, we can certainly control things like
filtering errors aside from this. I would say this was a nifi bug
(debatably) which should be fixed on that side.

Simon

On 13 August 2018 at 14:29, Otto Fowler <ottobackwa...@gmail.com> wrote:

> Also,  If we are doing the record readers, we can have a reader for a
> parser type and explicitly set the schema, as seen here :
> https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-standard-
> services/nifi-record-serialization-services-bundle/
> nifi-record-serialization-services/src/main/java/org/apache/nifi/syslog/
> Syslog5424Reader.java
>
>
>
> On August 13, 2018 at 09:26:50, Otto Fowler (ottobackwa...@gmail.com)
> wrote:
>
> If we can do the record readers ourselves ( with the parsers inside them )
> we can handle the returns.
> I’ll be doing the net flow 5 readers once the net flow 5 processor PR (
> not mine ) is in.
>
> I don’t think having a generic class loading parsers foo and having to
> manage all that is preferable to having
> an archetype and explicit parsers.
>
> Nifi processors and readers are self documenting, and this approach will
> make that not possible, as another consideration.
>
>
>
> On August 13, 2018 at 06:50:09, Simon Elliston Ball (
> si...@simonellistonball.com) wrote:
>
> Maybe the edge use case will clarify the config issue a little. The reason
> I would want to be able to push Metron parsers into NiFi would be so I can
> pre-parse and filter on the edge to save bandwidth from remote locations. I
> would expect to be able to parse at the edge and use NiFi to prioritise or
> filter on the Metron ready data, then push through to a 'NoOp' parser in
> Metron. For this to happen, we would absolutely not want to connect to
> Zookeeper, so I'm +1 on Otto's suggestion that the config be embeddable in
> NiFi properties. We cannot assume ZK connectivity from NiFi.
>
> I can also see a scenario where NiFi might make it easier to chain parsers,
> which is where it overlaps more with Metron. This is more about the fact
> that NiFi make it a lot easier to configure and manage complex multi-step
> flows than Metron, and is way more user intuitive from a design and
> monitoring perspective. My main concern around using NiFi in this way is
> about the load on the content repository. We are looking at a lot of
> content level transformation here. You could argue that the same load is
> taken off Kafka in the chaining scenario, but there is still a chance for a
> user to accidentally create a lot of disk access if they go over the top
> with NiFi.
>
> I see this as potentially a a chance to make the Metron Parser interface
> compatible with NiFi Record Readers. Then both communities could benefit
> from sharing each other's parsers.
>
> In terms of the NAR approach, I would say we have a base bundle of the NiFi
> bits (https://github.com/simonellistonball/metron/tree/nifi already has
> this for stellar, enrichments and an opinionated publisher, it also has a
> readme with some discussion around this
> https://github.com/simonellistonball/metron/tree/nifi/nifi-metron-bundle).
> We can then use other nar dependencies to side load parser classes into the
> record reader. We would then need to do some fancy property validation in
> NiFi to ensure the classes were available.
>
> Also, Record Readers are much much faster. The only problem I've found with
> them is that they error on blank output, which was a problem for me writing
> a netflow 9 reader (template only records need to live in NiFi cache, but
> not be emitted).
>
> In terms of the schema objection, I'm not sure why schema focus is a
> problem. Our parsers have implicit schema and the output schema formats
> used in NiFi are very flexible and could be "just a map". That said, we
> could also take the opportunity to introduce a method to the parser
> interface to emit traits to contribute the bits of schema that a parser
> produces. This would ultimately lead to us being able to generate output
> schemas (ES, Solr, Hive, whatever which would take a lot of the pain out of
> setup for sensors).
>
> Simon
>
> On 9 August 2018 at 16:42, Otto Fowler <ottobackwa...@gmail.com> wrote:
>
> > I would say that
> >
> > - For each configuration parameter we want to pull in, it should be
> > explicitly configured through a property as well as through a controller
> > service that accesses the metron zk
> > - Transformations should not be conflated with parsing in those
> processors
> > or readers
> >
> > There is no on the fly configuration change in nifi ( You can’t change
> > properties once started ).
> >
> > Wouldn’t the simplest minimal start be to say that we expect either nifi
> or
> > metron and simplify things? Let nifi nifi, let metron metron.
> >
> >
> > On August 9, 2018 at 10:53:24, Justin Leet (justinjl...@gmail.com)
> wrote:
> >
> > That's definitely good info, thanks for reaching out to them about it.
> >
> > In terms of exposing/sharing, I don't think we have to couple them
> tightly
> > (in fact, I think we should loosen the coupling as much as possible
> without
> > forcing reimplementation of things). I think there's definitely a way to
> do
> > that terms of the general purpose processor I proposed (or in terms of
> > RecordReader or another implementation).
> >
> > It would definitely be easy enough to configure it to either pull from ZK
> > or to use a parser config json extract as a parameter (to maintain the
> same
> > formatting and make migration easy). And we can still build specific
> > NiFi-oriented parsers as needed (that manage things like Schema via the
> > registry and other Nifi mechanisms). This keeps parsers entirely
> decoupled
> > from a metron installation.
> >
> > Alternatively, we extract our config handling to a module and scripts we
> > can package up and easily deploy configs against ZK (or the maybe Nifi's
> > StateController's or whatever). We definitely shouldn't need absolutely
> > everything installed to be able to run just parsers on Nifi.
> >
> > Having said that, right now the easiest way we have to maintain on the
> fly
> > updatable configs (and updatable is important!) is via ZK. Params in Nifi
> > aren't quite that flexible, to the best of my knowledge (i.e. you have to
> > stop, update config and restart). We might be able to exploit the
> > StateController to manage this for us, but I'm honestly not familiar
> enough
> > with it and for deployments split between NiFi and Storm, it means
> > configuration gets managed in a couple different ways (which may with
> users
> > since there is a fairly brightline delineation which makes it easier to
> > accept). There some complicated configs like fieldTransforms, which is
> > part of why I would like things to be configured in the same format (if
> not
> > the same mechanism).
> >
> > Ideally, in my mind, the parsers shared between both NiFi and Storm just
> > implement the very general MessageParser interface (which is pretty
> > minimal, a couple setup methods, validation, and the actual parse). This
> > is pretty lightweight and the split of metron-parsers into
> > metron-parsers-common et al. would loosen the coupling between parsers
> and
> > the rest of metron into that core needed to support that.
> >
> > IMO, at that point, we'd have a pretty minimal NAR (or NARs depending on
> > config management) that lets us run our set of parsers, lets users build
> > new parsers (and don't block specialized NiFi implementations that
> exploit
> > NiFi's feature set), and lets us get things configured in a relatively
> > consistent manner, without losing features, and hopefully requiring a
> > pretty minimal slice of Metron to be useful.
> >
> > On Thu, Aug 9, 2018 at 10:06 AM Otto Fowler <ottobackwa...@gmail.com>
> > wrote:
> >
> > > I think the benefits are clear. What is unclear is if the goal is to
> > > expose or share or re-use Metron capabilities ( stellar, parsing ) in
> > nifi
> > > in a way that is native to nifi ( configured and managed in nifi ),
> where
> > > you may not even need metron ( say you just want to parse asa ) or if
> the
> > > goal is to have a hybrid approach coupling the processors/readers to
> the
> > > metron installation.
> > >
> > >
> > > On August 9, 2018 at 09:14:58, Justin Leet (justinjl...@gmail.com)
> > wrote:
> > >
> > > I'll add onto Mike's discussion with the original set of requirements I
> > had
> > > in mind (and apply feedback on these as necessary!). This is largely
> > > overlap with what Mike said, but I want to make sure it's clear where
> my
> > > proposal was coming from, so we can improve on it as needed. James and
> > > Mike are also right, I think I skipped over the benefits of NiFi in
> > general
> > > a bit, so thanks for chiming in there.
> > >
> > > - Deploy our bundled parsers without needing custom wrapping on all of
> > > them.
> > > - Don't prevent ourselves from building custom wrapping as needed.
> > > - Custom Java parsers with an easy way to hook in, similar to what we
> > > already do in Storm.
> > > - One stop (or at least one format) configuration, for the case when
> > we're
> > > doing some thing in NiFi (parsers) and some elsewhere (enrichment and
> > > indexing). I don't think it'll always be "start in NiFi, end in Storm",
> > > especially as we build out Stellar capability, but I also don't want
> > users
> > > learning a different set of configs and config tools for every platform
> > we
> > > run on.
> > > - Ability to build out parsers and other systems fairly easily, e.g.
> > Spark.
> > > - Support our current use cases (in particular parser chaining as a
> more
> > > advanced use case).
> > >
> > > It really boils down to providing a relatively simple user path to be
> > able
> > > to migrate to NiFi as needed or desired as simply as possible in a very
> > > general way, while not preventing parser by parser enhancements.
> > >
> > > On Wed, Aug 8, 2018 at 7:14 PM Michael Miklavcic <
> > > michael.miklav...@gmail.com> wrote:
> > >
> > > > I think it also provides customers greater control over their
> > > architecture
> > > > by giving them the flexibility to choose where/how to host their
> > parsers.
> > > >
> > > > To Justin's point about the API, my biggest concern about the
> > > RecordReader
> > > > approach is that it is not stable. We already have a similar problem
> in
> > > > having the TransportClient in ElasticSearch - they are prone to
> > changing
> > > it
> > > > in minor versions with the advent of their newer REST API, which is
> > > > problematic for ensuring a stable installation.
> > > >
> > > > From my own perspective, our goal with NiFi, at least in part, should
> > be
> > > > the ability to deploy our core parsing infrastructure, i.e.
> > > >
> > > > - pre-built parsers
> > > > - custom java parsers
> > > > - Stellar transforms
> > > > - custom stellar transforms
> > > >
> > > > And have the ability to configure it similarly to how we configure
> > > parsers
> > > > within Storm. Consistent with our recent parser chaining and
> > aggregation
> > > > feature, users should be able to construct and deploy similar
> > constructs
> > > in
> > > > NiFi. The core architectural shift would be that parser code should
> be
> > > > platform agnostic. We provide the plumbing in Storm, NiFi, and <Spark
> > > > Streaming?, other> and platform architects and devops teams can
> choose
> > > how
> > > > and where to deploy.
> > > >
> > > > Best,
> > > > Mike
> > > >
> > > >
> > > > On Wed, Aug 8, 2018 at 9:57 AM James Sirota <jsir...@apache.org>
> > wrote:
> > > >
> > > > > Integration with NiFi would be useful for parsing low-volume
> > > telemetries
> > > > > at the edge. This is a much more resource friendly way to do it
> than
> > > > > setting up dedicated storm topologies. The integration would be
> that
> > > the
> > > > > NiFi processor parses the data and pushes it straight into the
> > > enrichment
> > > > > topic, saving us the resources of having multiple parsers in storm
> > > > >
> > > > > Thanks,
> > > > > James
> > > > >
> > > > > 07.08.2018, 11:29, "Otto Fowler" <ottobackwa...@gmail.com>:
> > > > > > Why do we start over. We are going back and forth on
> > implementation,
> > > > and
> > > > > I
> > > > > > don’t think we have the same goals or concerns.
> > > > > >
> > > > > > What would be the requirements or goals of metron integration
> with
> > > > Nifi?
> > > > > > How many levels or options for integration do we have?
> > > > > > What are the approaches to choose from?
> > > > > > Who are the target users?
> > > > > >
> > > > > > On August 7, 2018 at 12:24:56, Justin Leet (
> justinjl...@gmail.com)
> > > > > wrote:
> > > > > >
> > > > > > So how does the MetronRecordReader roll into everything? It seems
> > > like
> > > > > it'd
> > > > > > be more useful on the reader per format approach, but otherwise
> it
> > > > > doesn't
> > > > > > really seem like we gain much, and it requires getting everything
> > > > linked
> > > > > up
> > > > > > properly to be used. Assuming we looked at doing it that way, is
> > the
> > > > idea
> > > > > > that we'd setup a ControllerService with the MetronRecordReader
> > and a
> > > > > > MetronRecordWriter and then have the StellarTransformRecord
> > processor
> > > > > > configured with those ControllerServices? How do we manage the
> > > > > > configurations of the everything that way? How does the
> > > > ControllerService
> > > > > > get configured with whatever parser(s) are needed in the flow?
> > > > Basically,
> > > > > > what's your vision for how everything would tie together?
> > > > > >
> > > > > > I also forgot to mention this in the original writeup, but
> there's
> > > > > another
> > > > > > reason to avoid the RecordReader: It's not considered stable. See
> > > > > >
> > > > >
> > > >
> > > https://github.com/apache/nifi/blob/master/nifi-commons/
> > nifi-record/src/main/java/org/apache/nifi/serialization/
> > RecordReader.java#L34
> > > > > .
> > > > > > That alone makes me super hesitant to use it, if it can shift out
> > > from
> > > > > > under us in even in incremental version.
> > > > > >
> > > > > > I'm also unclear on why StellarTransformRecord processor matters
> > for
> > > > > either
> > > > > > approach. With the Processor approach you could simply follow it
> up
> > > > with
> > > > > > the Stellar processor, the same way you'd would in the
> RecordReader
> > > > > > approach. The Stellar processor should be a parallel improvement,
> > > not a
> > > > > > conflicting one.
> > > > > >
> > > > > > On Tue, Aug 7, 2018 at 11:50 AM Otto Fowler <
> > ottobackwa...@gmail.com
> > > >
> > > > > wrote:
> > > > > >
> > > > > >> A Metron Processor itself isn’t really necessary. A
> > > > MetronRecordReader
> > > > > (
> > > > > >> either the megalithic or a reader per format ) would be a good
> > > > > approach.
> > > > > >> Then have StellarTransformRecord processor that can do Stellar
> on
> > > > _any_
> > > > > >> record, regardless of source.
> > > > > >>
> > > > > >> On August 7, 2018 at 11:06:22, Justin Leet (
> justinjl...@gmail.com
> > )
> > > > > wrote:
> > > > > >>
> > > > > >> Thanks for the comments, Otto, this is definitely great
> feedback.
> > > I'd
> > > > > >> love to respond inline, but the email's already starting to lose
> > > it's
> > > > > >> formatting, so I'll go with the classic "wall of text". Let me
> > know
> > > > if
> > > > > I
> > > > > >> didn't address everything.
> > > > > >>
> > > > > >> Loading modules (or jars or whatever) outside of our Processor
> > gives
> > > > us
> > > > > >> the benefit of making it incredibly easy for a users to create
> > their
> > > > > own
> > > > > >> parsers. I would definitely expect our own bundled parsers to be
> > > > > included
> > > > > >> in our base NAR, but loading modules enables users to only have
> to
> > > > > learn
> > > > > >> how Metron wants our stuff lined up and just plug it in. Having
> > said
> > > > > that,
> > > > > >> I could see having a wrapper for our bundled parsers that makes
> it
> > > > > really
> > > > > >> easy to just say you want an MetronAsaParser or MetronBroParser,
> > > etc.
> > > > > That
> > > > > >> would give us the best of both worlds, where it's easy to get
> > setup
> > > > our
> > > > > >> bundled parsers and also trivial to pull in non-bundled parsers.
> > > What
> > > > > >> doing this gives us is an easy way to support (hopefully) every
> > > > parser
> > > > > that
> > > > > >> gets made, right out of the box, without us needing to build a
> > > > > specialized
> > > > > >> version of everything until we decide to and without users
> having
> > to
> > > > > jump
> > > > > >> through hoops.
> > > > > >>
> > > > > >> None of this prevents anyone from creating specialized parsers
> > (for
> > > > > perf
> > > > > >> reasons, or to use the schema registries, or anything else).
> It's
> > > > > probably
> > > > > >> worthwhile to package up some of built-in parsers and customize
> > them
> > > > > to use
> > > > > >> more specialized feature appropriately as we see things get used
> > in
> > > > the
> > > > > >> wild. Like you said, we could likely provide Avro schemas for
> some
> > > of
> > > > > this
> > > > > >> and give users a more robust experience on what we choose to
> > support
> > > > > and
> > > > > >> provide guidance for other things. I'm also worried that
> building
> > > > > >> specialized schemas becomes problematic for things like parser
> > > > chaining
> > > > > >> (where our routers wrap the underlying messages and add on their
> > own
> > > > > info).
> > > > > >> Going down that road potentially requires anything wrapped to
> > have a
> > > > > >> specialized schema for the wrapped version in addition to a
> > vanilla
> > > > > version
> > > > > >> (although please correct me if I'm missing something there, I'll
> > > > openly
> > > > > >> admit to some shakiness on how that would be handled).
> > > > > >>
> > > > > >> I also disagree that this is un-Nifi-like, although I'm
> admittedly
> > > > not
> > > > > as
> > > > > >> skilled there. The basis for doing this is directly inspired by
> > the
> > > > > >> JoltTransformer, which is extremely similar to the proposed
> setup
> > > for
> > > > > our
> > > > > >> parsers: Simply take a spec (in this case the configs, including
> > the
> > > > > >> fieldTransformations), and delegate a mapping from bytes[] to
> > JSON.
> > > > The
> > > > > >> Jolt library even has an Expression Language (check out
> > > > > >>
> > > > >
> > > >
> > > https://community.hortonworks.com/articles/105965/
> > expression-language-with-jolt-in-apache-nifi.html
> > > > > ),
> > > > > >> so it's not a foreign concept. I believe Simon Ball has already
> > done
> > > > > some
> > > > > >> experimenting around with getting Stellar running in NiFi, and
> I'd
> > > > > love to
> > > > > >> see Stellar more readily available in NiFi in general.
> > > > > >>
> > > > > >> Re: the ControllerService, I see this as a way to maintain
> > Metron's
> > > > > use of
> > > > > >> ZK as the source of config truth. Users could definitely be
> using
> > > > NiFi
> > > > > and
> > > > > >> Storm in tandem (parse in NiFi + enrich and index from Storm,
> for
> > > > > >> example). Using the ControllerService gives us a ZK instance as
> > the
> > > > > single
> > > > > >> source of truth. That way we aren't forcing users to go to two
> > > > > different
> > > > > >> places to manage configs. This also lets us leverage our
> existing
> > > > > scripts
> > > > > >> and our existing infrastructure around configs and their
> > management
> > > > and
> > > > > >> validation very easily. It also gives users a way to port from
> > NiFi
> > > > to
> > > > > >> Storm or vice-versa without having to migrate configs as well.
> We
> > > > could
> > > > > >> also provide the option to configure the Processor itself with
> the
> > > > data
> > > > > >> (just don't set up a controller service and provide the json or
> > > > > whatever as
> > > > > >> one of our properties).
> > > > > >>
> > > > > >> On Tue, Aug 7, 2018 at 10:12 AM Otto Fowler <
> > > ottobackwa...@gmail.com
> > > > >
> > > > > >> wrote:
> > > > > >>
> > > > > >>> I think this is a good idea. As I mentioned in the other thread
> > > I’ve
> > > > > >>> been doing a lot of work on Nifi recently.
> > > > > >>> I think the important thing is that what is done should be done
> > the
> > > > > NiFi
> > > > > >>> way, not bolting the Metron composition
> > > > > >>> onto Nifi. Think of it like the Tao of Unix, the parsers and
> > > > > components
> > > > > >>> should be single purpose and simple, allowing
> > > > > >>> exceptional flexibility in composition.
> > > > > >>>
> > > > > >>> Comments inline.
> > > > > >>>
> > > > > >>> On August 7, 2018 at 09:27:01, Justin Leet (
> > justinjl...@gmail.com)
> > > > > wrote:
> > > > > >>>
> > > > > >>> Hi all,
> > > > > >>>
> > > > > >>> There's interest in being able to run Metron parsers in NiFi,
> > > rather
> > > > > than
> > > > > >>>
> > > > > >>> inside Storm. I dug into this a bit, and have some thoughts on
> > how
> > > > we
> > > > > >>> could
> > > > > >>> go about this. I'd love feedback on this, along with anything
> > we'd
> > > > > >>> consider must haves as well as future enhancements.
> > > > > >>>
> > > > > >>> 1. Separate metron-parsers into metron-parsers-common and
> > > > metron-storm
> > > > > >>> and create metron-parsers-nifi. For this code to be reusable
> > across
> > > > > >>> platforms (NiFi, Storm, and anything else in the future), we'll
> > > need
> > > > > to
> > > > > >>> decouple our parsers and Storm.
> > > > > >>>
> > > > > >>> +1. The “parsing code” should be a library that implements an
> > > > > interface
> > > > > >>> ( another library ).
> > > > > >>>
> > > > > >>> The Processors and the Storm things can share them.
> > > > > >>>
> > > > > >>> - There's also some nice fringe benefits around refactoring our
> > > code
> > > > > >>> to be substantially more clear and understandable; something
> > > > > >>> which came up
> > > > > >>> while allowing for parser aggregation.
> > > > > >>> 2. Create a MetronProcessor that can run our parsers.
> > > > > >>> - I took a look at how RecordReader could be leveraged (e.g.
> > > > > >>> CSVRecordReader), but this is pretty tightly tied into schemas
> > > > > >>> and is meant
> > > > > >>> to be used by ControllerServices, which are then used by
> > > Processors.
> > > > > >>> There's friction involved there in terms of schemas, but also
> in
> > > > > terms of
> > > > > >>>
> > > > > >>> access to ZK configs and things like parser chaining. We might
> > > > > >>> be able to
> > > > > >>> leverage it, but it seems like it'd be fairly shoehorned in
> > > > > >>> without getting
> > > > > >>> the schema and other benefits.
> > > > > >>>
> > > > > >>> We won’t have to provide our ‘no schema processors’ ( grok,
> csv,
> > > > json
> > > > > ).
> > > > > >>>
> > > > > >>> All the remaining processors DO have schemas that we know
> about.
> > We
> > > > > can
> > > > > >>> just provide the avro schemas the same way we provide the ES
> > > > schemas.
> > > > > >>>
> > > > > >>> The “parsing” should not be conflated with the
> transform/stellar
> > in
> > > > > >>> NiFi. We should make that separate. Running Stellar over
> Records
> > > > > would be
> > > > > >>> the best thing.
> > > > > >>>
> > > > > >>> - This Processor would work similarly to Storm: bytes[] in ->
> > JSON
> > > > > >>> out.
> > > > > >>> - There is a Processor
> > > > > >>> <
> > > > > >>>
> > > > >
> > > >
> > > https://github.com/apache/nifi/blob/master/nifi-nar-
> > bundles/nifi-standard-bundle/nifi-standard-processors/src/
> > main/java/org/apache/nifi/processors/standard/JoltTransformJSON.java
> > > > > >>> >
> > > > > >>> that
> > > > > >>> handles loading other JARs that we can model a
> > > > > >>> MetronParserProcessor off of
> > > > > >>> that handles classpath/classloader issues (basically just sets
> > up a
> > > > > >>> classloader specific to what's being loaded and swaps out the
> > > > Thread's
> > > > > >>> loader when it calls to outside resources).
> > > > > >>>
> > > > > >>> There should be no reason to load modules outside the NAR. Why
> do
> > > > you
> > > > > >>> expect to? If each Metron Processor equiv of a Metron Storm
> > Parser
> > > > is
> > > > > just
> > > > > >>> parsing to json it shouldn’t need much.And we could package
> them
> > in
> > > > > the
> > > > > >>> NAR. I would suggest we have a Processor per Parser to allow
> for
> > > > > >>> specialization. It should all be in the nar.
> > > > > >>>
> > > > > >>> The Stellar Processor, if you would support the works would
> > > possibly
> > > > > need
> > > > > >>> this.
> > > > > >>>
> > > > > >>> 3. Create a MetronZkControllerService to supply our configs to
> > our
> > > > > >>> processors.
> > > > > >>> - This is a pretty established NiFi pattern for being able to
> > > > provide
> > > > > >>> access to other services needed by a Processor (e.g. databases
> or
> > > > > large
> > > > > >>> configurations files).
> > > > > >>> - The same controller service can be used by all Processors to
> > > > manage
> > > > > >>> configs in a consistent manner.
> > > > > >>>
> > > > > >>> I think controller services would make sense where needed, I’m
> > just
> > > > > not
> > > > > >>> sure what you imagine them being needed for?
> > > > > >>>
> > > > > >>> If the user has NiFi, and a Registry etc, are you saying you
> > > imagine
> > > > > them
> > > > > >>> using Metron + ZK to manage configurations? Or to be using BOTH
> > > > storm
> > > > > >>> processors and Nifi Processors?
> > > > > >>>
> > > > > >>> At that point, we can just NAR our controller service and
> parser
> > > > > processor
> > > > > >>>
> > > > > >>> up as needed, deploy them to NiFi, and let the user provide a
> > > config
> > > > > for
> > > > > >>> where their custom parsers can be provided (i.e. their parser
> > jar).
> > > > > This
> > > > > >>> would be 3 nars (processor, controller-service, and
> > > > > controller-service-api
> > > > > >>>
> > > > > >>> in order to bind the other two together).
> > > > > >>>
> > > > > >>> Once deployed, our ability to use parsers should fit well into
> > the
> > > > > >>> standard
> > > > > >>> NiFi workflow:
> > > > > >>>
> > > > > >>> 1. Create a MetronZkControllerService.
> > > > > >>> 2. Configure the service to point at zookeeper.
> > > > > >>> 3. Create a MetronParser.
> > > > > >>> 4. Configure it to use the controller service + parser jar
> > location
> > > > +
> > > > > >>> any other needed configs.
> > > > > >>> 5. Use the outputs as needed downstream (either writing out to
> > > Kafka
> > > > > or
> > > > > >>> feeding into more MetronParsers, etc.)
> > > > > >>>
> > > > > >>> Chaining parsers should ideally become a matter of chaining
> > > > > MetronParsers
> > > > > >>>
> > > > > >>> (and making sure the enveloping configs carry through
> properly).
> > > For
> > > > > >>> parser
> > > > > >>> aggregation, I'd just avoid it entirely until we know it's
> needed
> > > in
> > > > > NiFi.
> > > > > >>>
> > > > > >>> Justin
> > > > >
> > > > > -------------------
> > > > > Thank you,
> > > > >
> > > > > James Sirota
> > > > > PMC- Apache Metron
> > > > > jsirota AT apache DOT org
> > > > >
> > > > >
> > > >
> > >
> > >
> >
>
>
>
> --
> --
> simon elliston ball
> @sireb
>
>


-- 
--
simon elliston ball
@sireb

Reply via email to