[
https://issues.apache.org/jira/browse/CRUNCH-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15090802#comment-15090802
]
David Whiting edited comment on CRUNCH-585 at 1/9/16 10:12 PM:
---------------------------------------------------------------
I think it's possible to set up a profile for java 8 conditional on jdk version
>=1.8, then add the additional crunch-lambda module as part of the profile
definition. I tried this:
{code:xml}
<profiles>
<profile>
<id>java-8</id>
<activation>
<jdk>[1.8,]</jdk>
</activation>
<modules>
<module>crunch-lambda</module>
</modules>
</profile>
</profiles>
{code}
and it seems to compile everything as expected, but I don't have a <=1.7 jdk to
make sure it doesn't try and compile the module on that.
I can add this change to the next patch version (also with some minor fixes and
better testing and documentation).
was (Author: davw):
I think it's possible to set up a profile for java 8 conditional on jdk version
>=1.8, then add the additional crunch-lambda module as part of the profile
definition. I tried this:
<profiles>
<profile>
<id>java-8</id>
<activation>
<jdk>[1.8,]</jdk>
</activation>
<modules>
<module>crunch-lambda</module>
</modules>
</profile>
</profiles>
and it seems to compile everything as expected, but I don't have a <=1.7 jdk to
make sure it doesn't try and compile the module on that.
I can add this change to the next patch version (also with some minor fixes and
better testing and documentation).
> Move Java 8 lambda support into separate module
> ------------------------------------------------
>
> Key: CRUNCH-585
> URL: https://issues.apache.org/jira/browse/CRUNCH-585
> Project: Crunch
> Issue Type: Improvement
> Reporter: David Whiting
> Fix For: 0.14.0
>
> Attachments: 0001-Java-8-lambda-support-for-Apache-Crunch.patch,
> 0001-Java-8-lambda-support-for-Apache-Crunch.patch
>
>
> As discussed on a previous dev list thread, this patch implements a set of
> operations to conveniently use Java 8 lambda expressions and method
> references to construct Crunch pipelines by wrapping the PCollection
> instances into analogous "LCollection" instances which delegate the necessary
> operations, in much the same way the Scrunch wraps the Crunch Core API.
> I'm still not 100% convinced that this is better for the user than the
> existing lambda support via IMapFn and IDoFn PCollection operations, so I'm
> still interested in people's views on this.
> Advantages:
> - Concise self-contained implementation
> - Methods implemented in terms of a very basic subset of PCollection
> operations (useful if we want to scale down the PCollection API at some point)
> - API can be written in terms of the Java 8 library, operating on streams and
> functional interfaces, making in more familiar to a new developer.
> - Retain "type '.' and see what I can do" experience.
> - Really easy to add new operations (just default method on interface)
> Disadvantages:
> - PCollections must be wrapped into LCollections before use.
> - LCollections must be unwrapped into PCollections to access some existing
> operations.
> - Using counters and other contextual data is far more complex.
> Some limitations of this particular patch:
> - Some omissions in API (not sure how much to implement)
> - No Javadocs yet.
> - Very poor tests.
> - Naming is a bit off (eg. reduce() or reduceValues(), get() or underlying())
> I can fix all that, but I wanted to bring the community in at this point to
> get some feedback on both the idea and the implementation as it's quite a big
> patch.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)