Given that the Table API is going to be Flink's main API for analytical
workloads, it makes sense to make it as easy as possible for users to
actually use it.

The question I would have is which other transitive dependencies are we
gonna add to Flink's system class path by adding the Table API jars to
/lib. I would assume that most if not all should be filtered out by the
child-first class loader. However, if some unshaded dependencies come with
the Table API jars and users have disabled the child first class loading,
then we might break setups with this change. A release note could mitigate
this problem.

Cheers,
Till

On Tue, Jun 11, 2019 at 5:29 PM Stephan Ewen <se...@apache.org> wrote:

> Hi all!
>
> I want to discuss making the Table API jars part of the "flink uber jar" in
> "/lib" by default.
>
> So far, the Table API was an optional dependency in "/opt".
> With the current effort to make it a first class API in Flink, it would be
> good experience if the Table API was available by default.
>
> There are a few open questions, though:
>
> (1) Java only, or Scala as well?
>    ==> Ideally the Scala Table API is no runtime dependency, but only a
> client-side (pre-flight) dependency and simply part of the user program,
> not part of Flink's "/lib"
>
> (2) Which runner? Flink or Blink?
>    ==> Ideally both
>    ==> Do we need to rename the Blink classes to have ".blink." in the
> package to avoid class name clashes?
>    ==> Do we need to shade/relocate much to avoid dependency clashes?
>
> (3) What should happen with the legacy BatchTableEnvironment (DataSet
> based) module?
>    ==> Should be possible to simply add this as well, if the Flink runner
> is included anyways.
>
> Note that this does not mean users add a dependency to everything when they
> develop, so they should not see all environments.
> It simply should make table programs executable without moving stuff from
> /opt to /lib
>
> Best,
> Stephan
>

Reply via email to