Val, Thank you. I fixed issues and answered questions from comments. Please, take a look.
2017-12-13 3:28 GMT+03:00 Valentin Kulichenko <valentin.kuliche...@gmail.com >: > 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 > >> >>>>>>> > >> >>>>>>> > >> >>>>> > >> >> > >> >> > >> > >> > > > -- Nikolay Izhikov nizhikov....@gmail.com