Hi Nikolay,

I reviewed the code and left several comments in the ticket [1]. Please
take a look.

[1] https://issues.apache.org/jira/browse/IGNITE-3084

-Val

On Mon, Dec 4, 2017 at 3:03 PM, Valentin Kulichenko <
valentin.kuliche...@gmail.com> wrote:

> Denis,
>
> Nikolay was doing final changes and TC stabilization. I'm planning to do
> final review this week, so hopefully we will merge the code soon.
>
> -Val
>
> On Mon, Dec 4, 2017 at 1:31 PM, Denis Magda <dma...@apache.org> wrote:
>
>> Nikolay, Val,
>>
>> Since we agreed to release the feature without the strategy support, can
>> the current integration meet the world in 2.4 release? Please chime in this
>> conversation:
>> http://apache-ignite-developers.2346864.n4.nabble.com/Time-
>> and-scope-for-Apache-Ignite-2-4-td24987.html
>>
>> —
>> Denis
>>
>> > On Nov 28, 2017, at 5:42 PM, Valentin Kulichenko <
>> valentin.kuliche...@gmail.com> wrote:
>> >
>> > Denis,
>> >
>> > Agree. I will do the final review in next few days and merge the code.
>> >
>> > -Val
>> >
>> > On Tue, Nov 28, 2017 at 5:28 PM, Denis Magda <dma...@apache.org> wrote:
>> >
>> >> Guys,
>> >>
>> >> Looking into the parallel discussion about the strategy support I would
>> >> change my initial stance and support the idea of releasing the
>> integration
>> >> in its current state. Is the code ready to be merged into the master?
>> Let’s
>> >> concentrate on this first and handle the strategy support as a separate
>> >> JIRA task. Agree?
>> >>
>> >> —
>> >> Denis
>> >>
>> >>> On Nov 27, 2017, at 3:47 PM, Valentin Kulichenko <
>> >> valentin.kuliche...@gmail.com> wrote:
>> >>>
>> >>> Nikolay,
>> >>>
>> >>> Let's estimate the strategy implementation work, and then decide
>> weather
>> >> to
>> >>> merge the code in current state or not. If anything is unclear, please
>> >>> start a separate discussion.
>> >>>
>> >>> -Val
>> >>>
>> >>> On Fri, Nov 24, 2017 at 5:42 AM, Николай Ижиков <
>> nizhikov....@gmail.com>
>> >>> wrote:
>> >>>
>> >>>> Hello, Val, Denis.
>> >>>>
>> >>>>> Personally, I think that we should release the integration only
>> after
>> >>>> the strategy is fully supported.
>> >>>>
>> >>>> I see two major reason to propose merge of DataFrame API
>> implementation
>> >>>> without custom strategy:
>> >>>>
>> >>>> 1. My PR is relatively huge, already. From my experience of
>> interaction
>> >>>> with Ignite community - the bigger PR becomes, the more time of
>> >> commiters
>> >>>> required to review PR.
>> >>>> So, I propose to move smaller, but complete steps here.
>> >>>>
>> >>>> 2. It is not clear for me what exactly includes "custom strategy and
>> >>>> optimization".
>> >>>> Seems, that additional discussion required.
>> >>>> I think, I can put my thoughts on the paper and start discussion
>> right
>> >>>> after basic implementation is done.
>> >>>>
>> >>>>> Custom strategy implementation is actually very important for this
>> >>>> integration.
>> >>>>
>> >>>> Understand and fully agreed.
>> >>>> I'm ready to continue work in that area.
>> >>>>
>> >>>> 23.11.2017 02:15, Denis Magda пишет:
>> >>>>
>> >>>> Val, Nikolay,
>> >>>>>
>> >>>>> Personally, I think that we should release the integration only
>> after
>> >> the
>> >>>>> strategy is fully supported. Without the strategy we don’t really
>> >> leverage
>> >>>>> from Ignite’s SQL engine and introduce redundant data movement
>> between
>> >>>>> Ignite and Spark nodes.
>> >>>>>
>> >>>>> How big is the effort to support the strategy in terms of the
>> amount of
>> >>>>> work left? 40%, 60%, 80%?
>> >>>>>
>> >>>>> —
>> >>>>> Denis
>> >>>>>
>> >>>>> On Nov 22, 2017, at 2:57 PM, Valentin Kulichenko <
>> >>>>>> valentin.kuliche...@gmail.com> wrote:
>> >>>>>>
>> >>>>>> Nikolay,
>> >>>>>>
>> >>>>>> Custom strategy implementation is actually very important for this
>> >>>>>> integration. Basically, it will allow to create a SQL query for
>> Ignite
>> >>>>>> and
>> >>>>>> execute it directly on the cluster. Your current implementation
>> only
>> >>>>>> adds a
>> >>>>>> new DataSource which means that Spark will fetch data in its own
>> >> memory
>> >>>>>> first, and then do most of the work (like joins for example). Does
>> it
>> >>>>>> make
>> >>>>>> sense to you? Can you please take a look at this and provide your
>> >>>>>> thoughts
>> >>>>>> on how much development is implied there?
>> >>>>>>
>> >>>>>> Current code looks good to me though and I'm OK if the strategy is
>> >>>>>> implemented as a next step in a scope of separate ticket. I will do
>> >> final
>> >>>>>> review early next week and will merge it if everything is OK.
>> >>>>>>
>> >>>>>> -Val
>> >>>>>>
>> >>>>>> On Thu, Oct 19, 2017 at 7:29 AM, Николай Ижиков <
>> >> nizhikov....@gmail.com>
>> >>>>>> wrote:
>> >>>>>>
>> >>>>>> Hello.
>> >>>>>>>
>> >>>>>>> 3. IgniteCatalog vs. IgniteExternalCatalog. Why do we have two
>> >> Catalog
>> >>>>>>>>
>> >>>>>>> implementations and what is the difference?
>> >>>>>>>
>> >>>>>>> IgniteCatalog removed.
>> >>>>>>>
>> >>>>>>> 5. I don't like that IgniteStrategy and IgniteOptimization have
>> to be
>> >>>>>>>>
>> >>>>>>> set manually on SQLContext each time it's created....Is there any
>> >> way to
>> >>>>>>> automate this and improve usability?
>> >>>>>>>
>> >>>>>>> IgniteStrategy and IgniteOptimization are removed as it empty now.
>> >>>>>>>
>> >>>>>>> Actually, I think it makes sense to create a builder similar to
>> >>>>>>>>
>> >>>>>>> SparkSession.builder()...
>> >>>>>>>
>> >>>>>>> IgniteBuilder added.
>> >>>>>>> Syntax looks like:
>> >>>>>>>
>> >>>>>>> ```
>> >>>>>>> val igniteSession = IgniteSparkSession.builder()
>> >>>>>>>   .appName("Spark Ignite catalog example")
>> >>>>>>>   .master("local")
>> >>>>>>>   .config("spark.executor.instances", "2")
>> >>>>>>>   .igniteConfig(CONFIG)
>> >>>>>>>   .getOrCreate()
>> >>>>>>>
>> >>>>>>> igniteSession.catalog.listTables().show()
>> >>>>>>> ```
>> >>>>>>>
>> >>>>>>> Please, see updated PR - https://github.com/apache/igni
>> te/pull/2742
>> >>>>>>>
>> >>>>>>> 2017-10-18 20:02 GMT+03:00 Николай Ижиков <nizhikov....@gmail.com
>> >:
>> >>>>>>>
>> >>>>>>> Hello, Valentin.
>> >>>>>>>>
>> >>>>>>>> My answers is below.
>> >>>>>>>> Dmitry, do we need to move discussion to Jira?
>> >>>>>>>>
>> >>>>>>>> 1. Why do we have org.apache.spark.sql.ignite package in our
>> >> codebase?
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>> As I mentioned earlier, to implement and override Spark Catalog
>> one
>> >>>>>>>> have
>> >>>>>>>> to use internal(private) Spark API.
>> >>>>>>>> So I have to use package `org.spark.sql.***` to have access to
>> >> private
>> >>>>>>>> class and variables.
>> >>>>>>>>
>> >>>>>>>> For example, SharedState class that stores link to
>> ExternalCatalog
>> >>>>>>>> declared as `private[sql] class SharedState` - i.e. package
>> private.
>> >>>>>>>>
>> >>>>>>>> Can these classes reside under org.apache.ignite.spark instead?
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>> No, as long as we want to have our own implementation of
>> >>>>>>>> ExternalCatalog.
>> >>>>>>>>
>> >>>>>>>> 2. IgniteRelationProvider contains multiple constants which I
>> guess
>> >> are
>> >>>>>>>>>
>> >>>>>>>> some king of config options. Can you describe the purpose of
>> each of
>> >>>>>>>> them?
>> >>>>>>>>
>> >>>>>>>> I extend comments for this options.
>> >>>>>>>> Please, see my commit [1] or PR HEAD:
>> >>>>>>>>
>> >>>>>>>> 3. IgniteCatalog vs. IgniteExternalCatalog. Why do we have two
>> >> Catalog
>> >>>>>>>>>
>> >>>>>>>> implementations and what is the difference?
>> >>>>>>>>
>> >>>>>>>> Good catch, thank you!
>> >>>>>>>> After additional research I founded that only
>> IgniteExternalCatalog
>> >>>>>>>> required.
>> >>>>>>>> I will update PR with IgniteCatalog remove in a few days.
>> >>>>>>>>
>> >>>>>>>> 4. IgniteStrategy and IgniteOptimization are currently no-op.
>> What
>> >> are
>> >>>>>>>>>
>> >>>>>>>> our plans on implementing them? Also, what exactly is planned in
>> >>>>>>>> IgniteOptimization and what is its purpose?
>> >>>>>>>>
>> >>>>>>>> Actually, this is very good question :)
>> >>>>>>>> And I need advice from experienced community members here:
>> >>>>>>>>
>> >>>>>>>> `IgniteOptimization` purpose is to modify query plan created by
>> >> Spark.
>> >>>>>>>> Currently, we have one optimization described in IGNITE-3084 [2]
>> by
>> >>>>>>>> you,
>> >>>>>>>> Valentin :) :
>> >>>>>>>>
>> >>>>>>>> “If there are non-Ignite relations in the plan, we should fall
>> back
>> >> to
>> >>>>>>>> native Spark strategies“
>> >>>>>>>>
>> >>>>>>>> I think we can go little further and reduce join of two Ignite
>> >> backed
>> >>>>>>>> Data Frames into single Ignite SQL query. Currently, this
>> feature is
>> >>>>>>>> unimplemented.
>> >>>>>>>>
>> >>>>>>>> *Do we need it now? Or we can postpone it and concentrates on
>> basic
>> >>>>>>>> Data
>> >>>>>>>> Frame and Catalog implementation?*
>> >>>>>>>>
>> >>>>>>>> `Strategy` purpose, as you correctly mentioned in [2], is
>> transform
>> >>>>>>>> LogicalPlan into physical operators.
>> >>>>>>>> I don’t have ideas how to use this opportunity. So I think we
>> don’t
>> >>>>>>>> need
>> >>>>>>>> IgniteStrategy.
>> >>>>>>>>
>> >>>>>>>> Can you or anyone else suggest some optimization strategy to
>> speed
>> >> up
>> >>>>>>>> SQL
>> >>>>>>>> query execution?
>> >>>>>>>>
>> >>>>>>>> 5. I don't like that IgniteStrategy and IgniteOptimization have
>> to
>> >> be
>> >>>>>>>>>
>> >>>>>>>> set manually on SQLContext each time it's created....Is there any
>> >> way
>> >>>>>>>> to
>> >>>>>>>> automate this and improve usability?
>> >>>>>>>>
>> >>>>>>>> These classes added to `extraOptimizations` when one using
>> >>>>>>>> IgniteSparkSession.
>> >>>>>>>> As far as I know, there is no way to automatically add these
>> >> classes to
>> >>>>>>>> regular SparkSession.
>> >>>>>>>>
>> >>>>>>>> 6. What is the purpose of IgniteSparkSession? I see it's used in
>> >>>>>>>>>
>> >>>>>>>> IgniteCatalogExample but not in IgniteDataFrameExample, which is
>> >>>>>>>> Confusing.
>> >>>>>>>>
>> >>>>>>>> DataFrame API is *public* Spark API. So anyone can provide
>> >>>>>>>> implementation
>> >>>>>>>> and plug it into Spark. That’s why IgniteDataFrameExample doesn’t
>> >> need
>> >>>>>>>> any
>> >>>>>>>> Ignite specific session.
>> >>>>>>>>
>> >>>>>>>> Catalog API is *internal* Spark API. There is no way to plug
>> custom
>> >>>>>>>> catalog implementation into Spark [3]. So we have to use
>> >>>>>>>> `IgniteSparkSession` that extends regular SparkSession and
>> overrides
>> >>>>>>>> links
>> >>>>>>>> to `ExternalCatalog`.
>> >>>>>>>>
>> >>>>>>>> 7. To create IgniteSparkSession we first create IgniteContext.
>> Is it
>> >>>>>>>>>
>> >>>>>>>> really needed? It looks like we can directly provide the
>> >> configuration
>> >>>>>>>> file; if IgniteSparkSession really requires IgniteContext, it can
>> >>>>>>>> create it
>> >>>>>>>> by itself under the hood.
>> >>>>>>>>
>> >>>>>>>> Actually, IgniteContext is base class for Ignite <-> Spark
>> >> integration
>> >>>>>>>> for now. So I tried to reuse it here. I like the idea to remove
>> >>>>>>>> explicit
>> >>>>>>>> usage of IgniteContext.
>> >>>>>>>> Will implement it in a few days.
>> >>>>>>>>
>> >>>>>>>> Actually, I think it makes sense to create a builder similar to
>> >>>>>>>>>
>> >>>>>>>> SparkSession.builder()...
>> >>>>>>>>
>> >>>>>>>> Great idea! I will implement such builder in a few days.
>> >>>>>>>>
>> >>>>>>>> 9. Do I understand correctly that IgniteCacheRelation is for the
>> >> case
>> >>>>>>>>>
>> >>>>>>>> when we don't have SQL configured on Ignite side?
>> >>>>>>>>
>> >>>>>>>> Yes, IgniteCacheRelation is Data Frame implementation for a
>> >> key-value
>> >>>>>>>> cache.
>> >>>>>>>>
>> >>>>>>>> I thought we decided not to support this, no? Or this is
>> something
>> >>>>>>>>> else?
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>> My understanding is following:
>> >>>>>>>>
>> >>>>>>>> 1. We can’t support automatic resolving key-value caches in
>> >>>>>>>> *ExternalCatalog*. Because there is no way to reliably detect key
>> >> and
>> >>>>>>>> value
>> >>>>>>>> classes.
>> >>>>>>>>
>> >>>>>>>> 2. We can support key-value caches in regular Data Frame
>> >>>>>>>> implementation.
>> >>>>>>>> Because we can require user to provide key and value classes
>> >>>>>>>> explicitly.
>> >>>>>>>>
>> >>>>>>>> 8. Can you clarify the query syntax in
>> >> IgniteDataFrameExample#nativeS
>> >>>>>>>>>
>> >>>>>>>> parkSqlFromCacheExample2?
>> >>>>>>>>
>> >>>>>>>> Key-value cache:
>> >>>>>>>>
>> >>>>>>>> key - java.lang.Long,
>> >>>>>>>> value - case class Person(name: String, birthDate:
>> java.util.Date)
>> >>>>>>>>
>> >>>>>>>> Schema of data frame for cache is:
>> >>>>>>>>
>> >>>>>>>> key - long
>> >>>>>>>> value.name - string
>> >>>>>>>> value.birthDate - date
>> >>>>>>>>
>> >>>>>>>> So we can select data from data from cache:
>> >>>>>>>>
>> >>>>>>>> SELECT
>> >>>>>>>> key, `value.name`,  `value.birthDate`
>> >>>>>>>> FROM
>> >>>>>>>> testCache
>> >>>>>>>> WHERE key >= 2 AND `value.name` like '%0'
>> >>>>>>>>
>> >>>>>>>> [1] https://github.com/apache/ignite/pull/2742/commits/faf3ed6fe
>> >>>>>>>> bf417bc59b0519156fd4d09114c8da7
>> >>>>>>>> [2] https://issues.apache.org/jira/browse/IGNITE-3084?focusedCom
>> >>>>>>>> mentId=15794210&page=com.atlassian.jira.plugin.system.issuet
>> >>>>>>>> abpanels:comment-tabpanel#comment-15794210
>> >>>>>>>> [3] https://issues.apache.org/jira/browse/SPARK-17767?focusedCom
>> >>>>>>>> mentId=15543733&page=com.atlassian.jira.plugin.system.issuet
>> >>>>>>>> abpanels:comment-tabpanel#comment-15543733
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> 18.10.2017 04:39, Dmitriy Setrakyan пишет:
>> >>>>>>>>
>> >>>>>>>> Val, thanks for the review. Can I ask you to add the same
>> comments
>> >> to
>> >>>>>>>> the
>> >>>>>>>>
>> >>>>>>>>> ticket?
>> >>>>>>>>>
>> >>>>>>>>> On Tue, Oct 17, 2017 at 3:20 PM, Valentin Kulichenko <
>> >>>>>>>>> valentin.kuliche...@gmail.com> wrote:
>> >>>>>>>>>
>> >>>>>>>>> Nikolay, Anton,
>> >>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> I did a high level review of the code. First of all, impressive
>> >>>>>>>>>> results!
>> >>>>>>>>>> However, I have some questions/comments.
>> >>>>>>>>>>
>> >>>>>>>>>> 1. Why do we have org.apache.spark.sql.ignite package in our
>> >>>>>>>>>> codebase?
>> >>>>>>>>>> Can
>> >>>>>>>>>> these classes reside under org.apache.ignite.spark instead?
>> >>>>>>>>>> 2. IgniteRelationProvider contains multiple constants which I
>> >> guess
>> >>>>>>>>>> are
>> >>>>>>>>>> some king of config options. Can you describe the purpose of
>> each
>> >> of
>> >>>>>>>>>> them?
>> >>>>>>>>>> 3. IgniteCatalog vs. IgniteExternalCatalog. Why do we have two
>> >>>>>>>>>> Catalog
>> >>>>>>>>>> implementations and what is the difference?
>> >>>>>>>>>> 4. IgniteStrategy and IgniteOptimization are currently no-op.
>> What
>> >>>>>>>>>> are
>> >>>>>>>>>> our
>> >>>>>>>>>> plans on implementing them? Also, what exactly is planned in
>> >>>>>>>>>> IgniteOptimization and what is its purpose?
>> >>>>>>>>>> 5. I don't like that IgniteStrategy and IgniteOptimization have
>> >> to be
>> >>>>>>>>>> set
>> >>>>>>>>>> manually on SQLContext each time it's created. This seems to be
>> >> very
>> >>>>>>>>>> error
>> >>>>>>>>>> prone. Is there any way to automate this and improve usability?
>> >>>>>>>>>> 6. What is the purpose of IgniteSparkSession? I see it's used
>> >>>>>>>>>> in IgniteCatalogExample but not in IgniteDataFrameExample,
>> which
>> >> is
>> >>>>>>>>>> confusing.
>> >>>>>>>>>> 7. To create IgniteSparkSession we first create IgniteContext.
>> Is
>> >> it
>> >>>>>>>>>> really
>> >>>>>>>>>> needed? It looks like we can directly provide the configuration
>> >>>>>>>>>> file; if
>> >>>>>>>>>> IgniteSparkSession really requires IgniteContext, it can create
>> >> it by
>> >>>>>>>>>> itself under the hood. Actually, I think it makes sense to
>> create
>> >> a
>> >>>>>>>>>> builder
>> >>>>>>>>>> similar to SparkSession.builder(), it would be good if our APIs
>> >> here
>> >>>>>>>>>> are
>> >>>>>>>>>> consistent with Spark APIs.
>> >>>>>>>>>> 8. Can you clarify the query syntax
>> >>>>>>>>>> inIgniteDataFrameExample#nativeSparkSqlFromCacheExample2?
>> >>>>>>>>>> 9. Do I understand correctly that IgniteCacheRelation is for
>> the
>> >> case
>> >>>>>>>>>> when
>> >>>>>>>>>> we don't have SQL configured on Ignite side? I thought we
>> decided
>> >>>>>>>>>> not to
>> >>>>>>>>>> support this, no? Or this is something else?
>> >>>>>>>>>>
>> >>>>>>>>>> Thanks!
>> >>>>>>>>>>
>> >>>>>>>>>> -Val
>> >>>>>>>>>>
>> >>>>>>>>>> On Tue, Oct 17, 2017 at 4:40 AM, Anton Vinogradov <
>> >>>>>>>>>> avinogra...@gridgain.com>
>> >>>>>>>>>> wrote:
>> >>>>>>>>>>
>> >>>>>>>>>> Sounds awesome.
>> >>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> I'll try to review API & tests this week.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Val,
>> >>>>>>>>>>> Your review still required :)
>> >>>>>>>>>>>
>> >>>>>>>>>>> On Tue, Oct 17, 2017 at 2:36 PM, Николай Ижиков <
>> >>>>>>>>>>> nizhikov....@gmail.com>
>> >>>>>>>>>>> wrote:
>> >>>>>>>>>>>
>> >>>>>>>>>>> Yes
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> 17 окт. 2017 г. 2:34 PM пользователь "Anton Vinogradov" <
>> >>>>>>>>>>>> avinogra...@gridgain.com> написал:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Nikolay,
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> So, it will be able to start regular spark and ignite
>> clusters
>> >>>>>>>>>>>>> and,
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> using
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> peer classloading via spark-context, perform any DataFrame
>> >> request,
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>> correct?
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> On Tue, Oct 17, 2017 at 2:25 PM, Николай Ижиков <
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> nizhikov....@gmail.com>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> wrote:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Hello, Anton.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> An example you provide is a path to a master *local* file.
>> >>>>>>>>>>>>>> These libraries are added to the classpath for each remote
>> >> node
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> running
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>> submitted job.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Please, see documentation:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> http://spark.apache.org/docs/latest/api/java/org/apache/
>> >>>>>>>>>>>>>> spark/SparkContext.html#addJar(java.lang.String)
>> >>>>>>>>>>>>>> http://spark.apache.org/docs/latest/api/java/org/apache/
>> >>>>>>>>>>>>>> spark/SparkContext.html#addFile(java.lang.String)
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> 2017-10-17 13:10 GMT+03:00 Anton Vinogradov <
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> avinogra...@gridgain.com
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>> :
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Nikolay,
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> With Data Frame API implementation there are no
>> requirements
>> >> to
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> have
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>> any
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Ignite files on spark worker nodes.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> What do you mean? I see code like:
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> spark.sparkContext.addJar(MAVEN_HOME +
>> >>>>>>>>>>>>>>> "/org/apache/ignite/ignite-core/2.3.0-SNAPSHOT/ignite-
>> >>>>>>>>>>>>>>> core-2.3.0-SNAPSHOT.jar")
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> On Mon, Oct 16, 2017 at 5:22 PM, Николай Ижиков <
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> nizhikov....@gmail.com>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> Hello, guys.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I have created example application to run Ignite Data
>> Frame
>> >> on
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> standalone
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Spark cluster.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> With Data Frame API implementation there are no
>> >> requirements to
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> have
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>> any
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Ignite files on spark worker nodes.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> I ran this application on the free dataset: ATP tennis
>> match
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> statistics.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> data - https://github.com/nizhikov/atp_matches
>> >>>>>>>>>>>>>>>> app - https://github.com/nizhikov/ig
>> nite-spark-df-example
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> Valentin, do you have a chance to look at my changes?
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> 2017-10-12 6:03 GMT+03:00 Valentin Kulichenko <
>> >>>>>>>>>>>>>>>> valentin.kuliche...@gmail.com
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> :
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> Hi Nikolay,
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> Sorry for delay on this, got a little swamped lately. I
>> >> will
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> do
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>> my
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> best
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> to
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> review the code this week.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> -Val
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> On Mon, Oct 9, 2017 at 11:48 AM, Николай Ижиков <
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> nizhikov....@gmail.com>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> Hello, Valentin.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> Did you have a chance to look at my changes?
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> Now I think I have done almost all required features.
>> >>>>>>>>>>>>>>>>>> I want to make some performance test to ensure my
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> implementation
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>> work
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> properly with a significant amount of data.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> And I definitely need some feedback for my changes.
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> 2017-10-09 18:45 GMT+03:00 Николай Ижиков <
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> nizhikov....@gmail.com
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>> :
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> Hello, guys.
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Which version of Spark do we want to use?
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> 1. Currently, Ignite depends on Spark 2.1.0.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>    * Can be run on JDK 7.
>> >>>>>>>>>>>>>>>>>>>    * Still supported: 2.1.2 will be released soon.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> 2. Latest Spark version is 2.2.0.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>    * Can be run only on JDK 8+
>> >>>>>>>>>>>>>>>>>>>    * Released Jul 11, 2017.
>> >>>>>>>>>>>>>>>>>>>    * Already supported by huge vendors(Amazon for
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> example).
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>> Note that in IGNITE-3084 I implement some internal Spark
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> API.
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>> So It will take some effort to switch between Spark 2.1 and
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> 2.2
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> 2017-09-27 2:20 GMT+03:00 Valentin Kulichenko <
>> >>>>>>>>>>>>>>>>>>> valentin.kuliche...@gmail.com>:
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> I will review in the next few days.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> -Val
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> On Tue, Sep 26, 2017 at 2:23 PM, Denis Magda <
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> dma...@apache.org
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> Hello Nikolay,
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> This is good news. Finally this capability is
>> coming to
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Ignite.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Val, Vladimir, could you do a preliminary review?
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Answering on your questions.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> 1. Yardstick should be enough for performance
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> measurements.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> As a
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> Spark
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> user, I will be curious to know what’s the point of this
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> integration.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> Probably we need to compare Spark + Ignite and Spark +
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Hive
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> or
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Spark +
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> RDBMS cases.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> 2. If Spark community is reluctant let’s include the
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> module
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> in
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> ignite-spark integration.
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> —
>> >>>>>>>>>>>>>>>>>>>>> Denis
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> On Sep 25, 2017, at 11:14 AM, Николай Ижиков <
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> nizhikov....@gmail.com>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Hello, guys.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Currently, I’m working on integration between Spark
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>> Ignite
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>> [1].
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> For now, I implement following:
>> >>>>>>>>>>>>>>>>>>>>>>   * Ignite DataSource implementation(
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> IgniteRelationProvider)
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>   * DataFrame support for Ignite SQL table.
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>   * IgniteCatalog implementation for a transparent
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> resolving
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>> of
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> ignites
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> SQL tables.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Implementation of it can be found in PR [2]
>> >>>>>>>>>>>>>>>>>>>>>> It would be great if someone provides feedback for
>> a
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> prototype.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> I made some examples in PR so you can see how API
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> suppose
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> to
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> be
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> used [3].
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> [4].
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> I need some advice. Can you help me?
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> 1. How should this PR be tested?
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Of course, I need to provide some unit tests. But
>> what
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> about
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>> scalability
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> tests, etc.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Maybe we need some Yardstick benchmark or similar?
>> >>>>>>>>>>>>>>>>>>>>>> What are your thoughts?
>> >>>>>>>>>>>>>>>>>>>>>> Which scenarios should I consider in the first
>> place?
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> 2. Should we provide Spark Catalog implementation
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> inside
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>> Ignite
>> >>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>> codebase?
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> A current implementation of Spark Catalog based on
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> *internal
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>> Spark
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> API*.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> Spark community seems not interested in making
>> Catalog
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> API
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> public
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> or
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> including Ignite Catalog in Spark code base [5], [6].
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> *Should we include Spark internal API
>> implementation
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> inside
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>> Ignite
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> code
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> base?*
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Or should we consider to include Catalog
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> implementation
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>> in
>> >>>>>>>>>>>
>> >>>>>>>>>>> some
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> external
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> module?
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> That will be created and released outside
>> Ignite?(we
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> still
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> can
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> support
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> develop it inside Ignite community).
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> [1] https://issues.apache.org/jira
>> /browse/IGNITE-3084
>> >>>>>>>>>>>>>>>>>>>>>> [2] https://github.com/apache/ignite/pull/2742
>> >>>>>>>>>>>>>>>>>>>>>> [3] https://github.com/apache/
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> ignite/pull/2742/files#diff-
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>> f4ff509cef3018e221394474775e0905
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> [4] https://github.com/apache/
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> ignite/pull/2742/files#diff-
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>> f2b670497d81e780dfd5098c5dd8a89c
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> [5] http://apache-spark-developers-list.1001551.n3.
>> >>>>>>>>>>>>>>>>>>>>>> nabble.com/Spark-Core-Custom-
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Catalog-Integration-between-
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>> Apache-Ignite-and-Apache-Spark-td22452.html
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>> [6] https://issues.apache.org/jira/browse/SPARK-17767
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>>>>> Nikolay Izhikov
>> >>>>>>>>>>>>>>>>>>>>>> nizhikov....@gmail.com
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>> Nikolay Izhikov
>> >>>>>>>>>>>>>>>>>>> nizhikov....@gmail.com
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>> Nikolay Izhikov
>> >>>>>>>>>>>>>>>>>> nizhikov....@gmail.com
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>> Nikolay Izhikov
>> >>>>>>>>>>>>>>>> nizhikov....@gmail.com
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>> Nikolay Izhikov
>> >>>>>>>>>>>>>> nizhikov....@gmail.com
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>
>> >>>>>>> --
>> >>>>>>> Nikolay Izhikov
>> >>>>>>> nizhikov....@gmail.com
>> >>>>>>>
>> >>>>>>>
>> >>>>>
>> >>
>> >>
>>
>>
>

Reply via email to