我一直在使用Spark中的Ignite SharedRDD,并希望了解Spark-Ignite作业中涉及的底层执行层/阶段。
在ScalarSharedRDDExample.scala,
val df = transformedValues.sql(“select _val from Integer where _val< 100 and _val> 9”)
(谁负责什么?)
答案 0 :(得分:1)
一切仍然按照以前的方式执行。 IgniteRDD实现为分布式Ignite缓存的视图,该缓存可以部署在Spark作业执行过程中,也可以部署在Spark工作者上,也可以部署在自己的集群中。
根据其网站上的信息,共享状态可能仅在Spark应用程序(嵌入模式)的生命周期内存在,或者可能超出Spark应用程序(独立模式),在这种情况下可以共享状态横跨多个Spark。
有关更多信息,请查看官方网站 Shared Apache Spark RDDs
还阅读一些有助于更好理解的记录用例。
Distributed Database Key-Value Store
参见代码示例,IgniteContext是从sparkContext创建的。
val igniteContext = new IgniteContext(sparkContext,
() => new IgniteConfiguration())
希望这有帮助!干杯!
答案 1 :(得分:0)
以下转换在哪里执行?
在Ignite节点上执行的SQL。
火花和点火如何划分火花应用的所有权?
您可以阅读here
构建Spark-Ignite应用程序的最佳实践是什么?
Ignite可以提供共享存储,因此状态可以从一个Spark应用程序或作业传递到另一个。
Ignite可以为SQL提供索引,因此Spark SQL可以加速超过1,000x(spark不会将数据编入索引)
使用文件而不是RDD时,Apache Ignite内存文件系统(IGFS)也可以在Spark作业和应用程序之间共享状态。
嗯,最佳做法是一个过于宽泛的问题 - 我认为你需要从Ignite Example开始并提出一个问题,如果你遇到任何问题。