IgniteRDD学习笔记(二)IgniteContext和IgniteRDD
2015-10-26 15:00
246 查看
IgniteContext:
IgniteContext是spark-ignite的主要实例,而创建IgniteContext需要SparkContext。IgniteContext会确保server和client端的IgniteNode存在每个参与job的实例。
当创建Context的实例时,会传给Context构造函数一个boolean类型的值(默认为true),通常是用于部署安装。
当为false时,环境将运行在嵌入式模式并且会通过context构造函数在每个worker上启动serverNode。
当IgniteContext创建成功后,通过fromCache方法可以获得IgniteRDD。当创建RDD的时候Cache不是必须存在与集群中的,此时可以通过配置文件或模版文件创建Cache.
通过默认的Ignite configuration来创建IgniteCache:
通过模版配置文件来创建IgniteCache:
IgniteRDD:
IgniteRDD是SparkRDD的一个抽象实例,以IgniteCache的形式存在。
IgniteRDD是可变的,所有的IgniteCache的更改(无论是因其他的RDD还是外部的cache的原因造成的改变)都能立即让RDD的使用者看到。
IgniteRDD利用分区缓存并且提供分区信息给spark的executor,IgniteRDD的分区数量等同于底层IgniteCache的数量。
通过
从Ignite中读取内容:
因为缓存中已经有了IgniteRDD,所以不需要再从Ignite给spark加载数据,当IgniteRDD创建时,所有的RDD方法都可以直接使用。
例如,假设有一个名为"partitioned"的IgniteCache包含字符串,下面的代码会获取所有包含字符串"Ignite"的值
因为IgniteCache是以键值对的方式存在,可以直接通过Spark
tuple RDD 和
还可以通过
例如,下面的代码是以一对的方式将1到10000的值存储到缓存"partitoned"中,十个并行任务:
当cache中配置了启动索引子系统,可以通过标准SQL和SQL方法来进行查询。
例如,假设"partitoned"Cache配置了整数对的索引,下面的代码会获得(10,100)中所有的整数:
IgniteContext是spark-ignite的主要实例,而创建IgniteContext需要SparkContext。IgniteContext会确保server和client端的IgniteNode存在每个参与job的实例。
当创建Context的实例时,会传给Context构造函数一个boolean类型的值(默认为true),通常是用于部署安装。
当为false时,环境将运行在嵌入式模式并且会通过context构造函数在每个worker上启动serverNode。
当IgniteContext创建成功后,通过fromCache方法可以获得IgniteRDD。当创建RDD的时候Cache不是必须存在与集群中的,此时可以通过配置文件或模版文件创建Cache.
通过默认的Ignite configuration来创建IgniteCache:
val igniteContext = new IgniteContext[Integer, Integer](sparkContext, () => new IgniteConfiguration())
通过模版配置文件来创建IgniteCache:
val igniteContext = new IgniteContext[Integer, Integer](sparkContext, "examples/config/example-cache.xml")
IgniteRDD:
IgniteRDD是SparkRDD的一个抽象实例,以IgniteCache的形式存在。
IgniteRDD是可变的,所有的IgniteCache的更改(无论是因其他的RDD还是外部的cache的原因造成的改变)都能立即让RDD的使用者看到。
IgniteRDD利用分区缓存并且提供分区信息给spark的executor,IgniteRDD的分区数量等同于底层IgniteCache的数量。
通过
getPrefferredLocationsget方法可以得到计算所需要的数据位置。
从Ignite中读取内容:
因为缓存中已经有了IgniteRDD,所以不需要再从Ignite给spark加载数据,当IgniteRDD创建时,所有的RDD方法都可以直接使用。
例如,假设有一个名为"partitioned"的IgniteCache包含字符串,下面的代码会获取所有包含字符串"Ignite"的值
val cache = igniteContext.fromCache("partitioned") val result = cache.filter(_._2.contains("Ignite")).collect()给Ignite里写入内容:
因为IgniteCache是以键值对的方式存在,可以直接通过Spark
tuple RDD 和
savePairs方法来保存数据。该方法会利用RDD分区并且以类似的方式存储值。
还可以通过
saveValues方法只保存RDD的值到Cache中,IgniteRDD会给每个存储在Cache的值生成一个独一无二的键
例如,下面的代码是以一对的方式将1到10000的值存储到缓存"partitoned"中,十个并行任务:
val cacheRdd = igniteContext.fromCache("partitioned") cacheRdd.savePairs(sparkContext.parallelize(1 to 10000, 10).map(i => (i, i)))对IgniteCache执行SQL:
当cache中配置了启动索引子系统,可以通过标准SQL和SQL方法来进行查询。
例如,假设"partitoned"Cache配置了整数对的索引,下面的代码会获得(10,100)中所有的整数:
val cacheRdd = igniteContext.fromCache("partitioned") val result = cacheRdd.sql( "select _val from Integer where val > ? and val < ?", 10, 100)
相关文章推荐
- iOS自动化编译
- js或jquery实现页面打印可局部打印
- 超级表格全新界面全新体验
- spring 2.0 到3.0的新特性及理解
- C++STL学习(11)STL算法(2)
- 从MVC到前后端分离
- Android-通过SlidingPaneLayout高仿微信6.2最新版手势滑动返回(一)
- 让你的iOS应用提前通过审核
- Eclipse的Tomcat热部署,免重启的方法
- 浏览器href自动解析uri(执行urldecode)
- SQLSERVER排查CPU占用高的情况
- iOS单列的实现
- 项目采购管理和项目文档和配置管理
- ThreadLocal实现方式&使用介绍---无锁化线程封闭
- 河南第八届省赛(引水工程)(Prim求最小生成树)
- HDU 4027 Can you answer these queries?(线段树)
- Swift之UITabBarController 导航控制器的自定义
- IOS中self.xx 和 _xx 的区别
- 网络编程 笔记(十)多播与广播
- 通过UDP发送和接收数据包