We will release some open source when it's ready but the basic idea is to
define a single task that implements all the interfaces, and have that
delegate to clojure handlers.
On Feb 10, 2016 4:39 PM, "Jacob Maes" <jacob.m...@gmail.com> wrote:

> Hey Andy,
>
> That's good news! Do you mind sharing the revelation for any other Samza
> users in Clojure-land?
>
> -Jake
>
> On Wed, Feb 10, 2016 at 4:07 PM, Andy Chambers <
> andy.chamb...@fundingcircle.com> wrote:
>
> > My co-worker has figured out how to do this without any changes required
> in
> > samza.
> > Andy Chambers | Full-Stack Software Developer
> >
> > andy.chamb...@fundingcircle.com | 707-205-6502 (m)
> >
> >
> >
> >
> > 747 Front St, 4th Fl | San Francisco, CA 94111
> >
> > Our Mission: T o build a better financial world
> >
> >
> >
> >
> >
> >
> > Unless specifically indicated, this e-mail is not an offer to sell or a
> > solicitation of any investment products or other financial product or
> > service,
> > an official confirmation of any transaction, or an official statement of
> > Funding
> > Circle USA. This e-mail is meant only for the intended recipient of this
> > transmission, and
> > contains trade secret and strictly confidential information belonging to
> > the
> > sender. It is unlawful for unauthorized individuals to review, use, copy,
> > disclose, or disseminate confidential information. If you have received
> > this
> > e-mail in error, please notify the sender immediately by telephone at
> > 857.285.1263 or by return email and promptly delete this message from
> > your system.
> >
> >
> >
> > On 9 February 2016 at 23:47, Andy Chambers <
> > andy.chamb...@fundingcircle.com > wrote:
> > No Problem. I'm new to samza so it is entirely possible there's already a
> > way to
> > do this that I'm missing.
> > What I'm aiming for, is to implement the features described in the README
> > of my
> > project https://github.com/ cddr/samza-config . For discussion purposes,
> > I'll copy the example here...
> > (ns example.word-counter
> >   (:require
> >    [samza-config.core :refer [stateful-task key-value-store]]))
> >
> > (defn count-words [store sentence output]
> >   (doseq [word (split sentence)]
> >     (update-in store word inc)
> >     (output :word-count {:word word
> >                          :count (get store word)})))
> >
> > (defjob word-counter
> >   {:inputs [(topic “words”)]
> >    :outputs [(topic “word-counts”)]
> >    :storage (key-value-store :word-counts)
> >    :task (stateful-task
> >            (fn [store input output]
> >              (count-words store input output)))})
> >
> > I thought the easiest way to implement this would be for defjob to setup
> > some
> > metadata that points to implementations of StreamTask/InitableTask and
> > have a
> > custom ConfigFactory that can return the config for a named job.
> > Here is the (in development) implementation of ConfigFactory
> > (defrecord JobConfigFactory [] ConfigFactory (getConfig [this uri] (let
> > [job (find-job uri)] (println “found job:” job) job)))
> > Unfortunately when I run the job runner, passing the name of this class
> as
> > the
> > --config-factory, I get the following stacktrace. I believe this is
> because
> > Clojure uses a special “DynamicClassLoader” to find these classes. That
> is
> > what
> > I'd set the classloader to if there was the option to do so.
> > $ lein do run -m samza-config.job example.jobs.hello-world Running samza
> > job: notifications.jobs.send-email Config Factory: samza_config.job.
> > JobConfigFactory Class Loader: #object[sun.misc.Launcher$ AppClassLoader
> > 0x4aa298b7 sun.misc.Launcher$ AppClassLoader@4aa298b7] Exception in
> > thread “main” java.lang. ClassNotFoundException: samza_config.job.
> > JobConfigFactory, compiling:(/private/var/ folders/yt/
> > ch58t4q565g3vjvyj5wjfkt00000gp /T/form-init23293643677066296. clj:1:123)
> at
> > clojure.lang.Compiler.load( Compiler.java:7391) at clojure.lang.Compiler.
> > loadFile(Compiler.java:7317) at clojure.main$load_script.
> > invokeStatic(main.clj:275) at clojure.main$init_opt.
> > invokeStatic(main.clj:277) at clojure.main$init_opt.invoke( main.clj:277)
> > at clojure.main$initialize. invokeStatic(main.clj:308) at
> > clojure.main$null_opt. invokeStatic(main.clj:342) at
> > clojure.main$null_opt.invoke( main.clj:339) at clojure.main$main.
> > invokeStatic(main.clj:421) at clojure.main$main.doInvoke( main.clj:384)
> at
> > clojure.lang.RestFn.invoke( RestFn.java:421) at
> > clojure.lang.Var.invoke(Var. java:383) at clojure.lang.AFn.
> > applyToHelper(AFn.java:156) at clojure.lang.Var.applyTo(Var. java:700) at
> > clojure.main.main(main.java: 37) Caused by: java.lang.
> > ClassNotFoundException: samza_config.job. JobConfigFactory at
> > java.net.URLClassLoader. findClass(URLClassLoader.java: 381) at
> > java.lang.ClassLoader. loadClass(ClassLoader.java: 424) at
> > sun.misc.Launcher$ AppClassLoader.loadClass( Launcher.java:331) at
> > java.lang.ClassLoader. loadClass(ClassLoader.java: 357) at
> > java.lang.Class.forName0( Native Method) at
> java.lang.Class.forName(Class.
> > java:264) at org.apache.samza.util. CommandLine.loadConfig(
> > CommandLine.scala:66) at org.apache.samza.job. JobRunner$.main(JobRunner.
> > scala:65) at org.apache.samza.job. JobRunner.main(JobRunner. scala) at
> > samza_config.job$_main. invokeStatic(job.clj:102) at
> > samza_config.job$_main. doInvoke(job.clj:96) at
> clojure.lang.RestFn.invoke(
> > RestFn.java:408) at clojure.lang.Var.invoke(Var. java:379) at
> > user$eval63.invokeStatic(form- init23293643677066296.clj:1) at
> > user$eval63.invoke(form- init23293643677066296.clj:1) at
> > clojure.lang.Compiler.eval( Compiler.java:6927) at
> > clojure.lang.Compiler.eval( Compiler.java:6917) at
> > clojure.lang.Compiler.load( Compiler.java:7379) ... 14 more
> > That repo also has similarly defined implementations of serde factories
> > that
> > serialize/deserialize avro messages and check them against the confluent
> > schema
> > registry.
> > The biggest pain point IMO is the requirement to build a jar to run a job
> > during
> > development. I think it would be possible to define these classes in Java
> > and
> > have them call into a Clojure API but that's basically what I'm trying to
> > avoid
> > as I'm more likely to get the Java wrong.
> > Thanks for taking the time to understand this request.
> > Cheers, AndyAndy Chambers | Full-Stack Software Developer
> >
> > andy.chambers@fundingcircle. com | 707-205-6502 (m)
> >
> >
> >
> >
> > 747 Front St, 4th Fl | San Francisco, CA 94111
> >
> > Our Mission: T o build a better financial world
> >
> >
> >
> >
> >
> >
> > Unless specifically indicated, this e-mail is not an offer to sell or a
> > solicitation of any investment products or other financial product or
> > service,
> > an official confirmation of any transaction, or an official statement of
> > Funding
> > Circle USA. This e-mail is meant only for the intended recipient of this
> > transmission, and
> > contains trade secret and strictly confidential information belonging to
> > the
> > sender. It is unlawful for unauthorized individuals to review, use, copy,
> > disclose, or disseminate confidential information. If you have received
> > this
> > e-mail in error, please notify the sender immediately by telephone at
> > 857.285.1263 or by return email and promptly delete this message from
> > your system.
> >
> >
> > On 9 February 2016 at 22:46, Yi Pan < nickpa...@gmail.com > wrote:
> > Hi, Andy,
> >
> > Forgive me for my ignorance on the topic of Clojure. Could you give some
> > simple example that Config and Serde Factories are in "Clojure-land" and
> > how would a customized ClassLoader help in this case?
> >
> > Thanks a lot!
> >
> > -Yi
> >
> > On Tue, Feb 9, 2016 at 10:36 PM, Andy Chambers <
> > andy.chambers@fundingcircle. com > wrote:
> >
> > > That would help but if I understand it correctly, it would still be
> > > necessary to implement things like Config and Serde Factories in Java.
> It
> > > would be nice to stay in "Clojure-land" to implement those too.
> > >
> > > *Andy Chambers* | Full-Stack Software Developer
> > >
> > > * andy.chambers@fundingcircle. com < andy.chambers@fundingcircle. com
> > >* |
> > > 707-205-6502 (m)
> > >
> > >
> > > 747 Front St, 4th Fl | San Francisco, CA 94111
> > >
> > > *Our Mission: **T**o build a better financial world*
> > >
> > >
> > > Unless specifically indicated, this e-mail is not an offer to sell or a
> > > solicitation of any investment products or other financial product or
> > > service, an official confirmation of any transaction, or an official
> > > statement of Funding Circle USA. This e-mail is meant only for the
> > > intended recipient of this transmission, and contains trade secret and
> > > strictly confidential information belonging to the sender. It is
> unlawful
> > > for unauthorized individuals to review, use, copy, disclose, or
> > disseminate
> > > confidential information. If you have received this e-mail in error,
> > please
> > > notify the sender immediately by telephone at 857.285.1263 or by
> return
> > > email and promptly delete this message from your system.
> > >
> > > On 9 February 2016 at 22:25, Yi Pan < nickpa...@gmail.com > wrote:
> > >
> > > > Hi, Andy,
> > > >
> > > > I think that you are looking for the feature in SAMZA-697. Or are you
> > > > looking for something even more specific?
> > > >
> > > > On Tue, Feb 9, 2016 at 10:22 PM, Andy Chambers <
> > > > andy.chambers@fundingcircle. com > wrote:
> > > >
> > > > > Hey Folks,
> > > > > I'm trying to build some tooling to make writing jobs in Clojure a
> > > little
> > > > > bit
> > > > > more interactive. One feature that I think would help a lot is to
> > allow
> > > > > specification of a ClassLoader that is able to find classes defined
> > > > > dynamically
> > > > > in Clojure.
> > > > > Would you consider a feature/patch that adds a config parameter for
> > > this
> > > > > that
> > > > > was respected everywhere Class/forName is called?
> > > > > Is there anything else I should consider?
> > > > > Thanks,
> > > > > Andy
> > > > > Andy Chambers | Full-Stack Software Developer
> > > > >
> > > > > andy.chambers@fundingcircle. com | 707-205-6502 (m)
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > 747 Front St, 4th Fl | San Francisco, CA 94111
> > > > >
> > > > > Our Mission: T o build a better financial world
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Unless specifically indicated, this e-mail is not an offer to sell
> > or a
> > > > > solicitation of any investment products or other financial product
> or
> > > > > service,
> > > > > an official confirmation of any transaction, or an official
> statement
> > > of
> > > > > Funding
> > > > > Circle USA. This e-mail is meant only for the intended recipient of
> > > this
> > > > > transmission, and
> > > > > contains trade secret and strictly confidential information
> belonging
> > > to
> > > > > the
> > > > > sender. It is unlawful for unauthorized individuals to review, use,
> > > copy,
> > > > > disclose, or disseminate confidential information. If you have
> > received
> > > > > this
> > > > > e-mail in error, please notify the sender immediately by telephone
> at
> > > > > 857.285.1263 or by return email and promptly delete this message
> > from
> > > > > your system.
> > > >
> > >
> >
>

Reply via email to