+1 for moving the whole type extractor and type information classes to 
"flink-core".

The user cannot see "flink-core” because it is a hidden package from user’s 
perspective.
So the package could be deployed with Scala version variation safely. I think 
that we can
mix “flink-core” and some Scala codes which are used widely.


Regards,
Chiwan Park

> On Jun 21, 2015, at 8:48 AM, Robert Metzger <rmetz...@apache.org> wrote:
> 
> I like option 1 the most ("move to flink-core"), however, it would scatter
> the type extractor / type information classes accross multiple projects.
> Why are we not moving the entire type extractor system into "flink-core"?
> 
> There were some thoughts in the past to restructure the maven module
> layout: https://issues.apache.org/jira/browse/FLINK-1712 .. I think the
> change would be in line with the move.
> 
> 
> On Wed, Jun 10, 2015 at 7:52 AM, Gábor Gévay <gga...@gmail.com> wrote:
> 
>> I see four options to solve this without adding the dependency:
>> 1. Move CaseClassTypeInfo and CaseClassComparator to flink-core. Till
>> said that we want to avoid mixed Scala and Java modules, which rules
>> this out.
>> 2. Create a new toplevel maven project scala-core, and move things there.
>> 3. Hacky solution: What I actually need is just to determine if a
>> TypeInfo instance is a CaseClassTypeInfo. This could be achieved by
>> adding an isCaseClassTypeInfo() method to TupleTypeInfoBase returning
>> false, and override it in CaseClassTypeInfo to return true.
>> 4. Reimplement CaseClassTypeInfo and CaseClassComparator in Java. I
>> hope that this can be avoided.
>> 
>> I think the decision boils down to whether similar problems will
>> probably arise in the future. If this is a unique issue, then 3. is
>> fine. Otherwise it won't be possible to avoid doing 2. later anyway.
>> Maybe someone who knows Flink better than me can estimate how likely
>> this is?
>> 
>> Best regards,
>> Gabor
>> 
>> 
>> 2015-06-10 15:55 GMT+02:00 Gábor Gévay <gga...@gmail.com>:
>>>> "it does not feel right to add an API package to a core package
>>> 
>>> Yes, that makes sense. I just tried removing the flink-java dependency
>>> from flink-streaming to see what needs it, and it builds fine without
>>> it :)
>>> 
>>> What do you think about the second option? (to move the Scala
>>> typeutils (or just CaseClassTypeInfo and CaseClassComparator) to
>>> flink-core, to where the Java typeutils are) This would be mixing
>>> scala code to an otherwise java module, but I don't know whether that
>>> is a problem.
>>> 
>>> Cheers,
>>> Gabor
>>> 
>>> 2015-06-10 15:46 GMT+02:00 Till Rohrmann <trohrm...@apache.org>:
>>>> Btw: I noticed that all streaming modules depend on flink-core,
>>>> flink-runtime, flink-clients and flink-java. Is there a particular
>> reason
>>>> why the streaming connectors depend on flink-clients and flink-java?
>>>> 
>>>> On Wed, Jun 10, 2015 at 3:41 PM Till Rohrmann <trohrm...@apache.org>
>> wrote:
>>>> 
>>>>> I see the reason why you want to add flink-scala as a dependency to
>>>>> flink-streaming-core. However, it does not feel right to add an API
>> package
>>>>> to a core package IMHO.
>>>>> 
>>>>> But I noticed that flink-streaming-core also depends on flink-java.
>> Which
>>>>> seems odd to me as well. I'm not a streaming expert and thus cannot
>> tell
>>>>> much about the reasons why a core package has a dependency on an API
>>>>> package but for me this looks more like an indicator for a necessary
>>>>> restructuring of our packages. Maybe someone working on the streaming
>> parts
>>>>> can chime in and shed some light on the required dependencies.
>>>>> 
>>>>> Cheers,
>>>>> Till
>>>>> 
>>>>> 
>>>>> On Wed, Jun 10, 2015 at 2:13 PM Gábor Gévay <gga...@gmail.com> wrote:
>>>>> 
>>>>>> Hello,
>>>>>> 
>>>>>> I would like to ask if it would be OK if I added flink-scala as a
>>>>>> dependency to flink-streaming-core. An alternative would be to move
>>>>>> the Scala typeutils to flink-core (to where the Java typeutils are).
>>>>>> Why I need this:
>>>>>> 
>>>>>> While I am implementing the fast median calculation for windows as
>>>>>> part of my Google Summer of Code project, I am refactoring the way
>>>>>> sum, min, max, etc. are accessing the user-specified field
>>>>>> (https://github.com/apache/flink/pull/684). Currently both the logic
>>>>>> of their aggregators are duplicated for the different kinds of types
>>>>>> (tuple, pojo, array, Scala case class, simple), and also the field
>>>>>> access logic is duplicated across the different aggregators. In my
>>>>>> GSoC project I will implement some further methods (avg, variance,
>>>>>> etc.) that take the same kind of parameters as sum, min, etc., so it
>>>>>> will be neccassary to have the field access logic centralized (this is
>>>>>> the FieldAccessor class in the PR). It would be convenient if this
>>>>>> could also handle Scala case classes, for which CaseClassTypeInfo is
>>>>>> needed which is currently in flink-scala.
>>>>>> 
>>>>>> Best regards,
>>>>>> Gabor
>>>>>> 
>>>>> 
>> 




Reply via email to