avatar

Catalog
Ignite与Spark

Ignite作为Spark的RDD和DataFrame很好用,这周提前三天完成了任务就开始着手继续改造Ignite,顺便练习下Scala和Spark,还有引擎下推技术。

RDD和DataFrame的区别就在于DataFrame更像是一个二维表格,在这个二维表格里面,我们是知道每一列的名称,而RDD只是一个集群范围的、分区化的元素的集合。

我在我的github仓库中创建了一个spark学习的地址,跟踪学习状态,地址:https://github.com/lilyhuli/spark

IgniteRDD

IgniteRDD 是一个SparkRDD抽象的实现,它表示Ignite的缓存的活动视图。IgniteRDD是议程不变的,Ignit缓存所有的改变对于RDD用户都会立即可见。

IgniteRDD 利用Ignite缓存的分区性质然后向Spark执行器提供分区信息。IgniteRDD中的分区数量等于底层Ignite的分区数量。

Code
1
2
val cache = igniteContext.fromCache("partitioned")
val resukt = cache.filter(_._.2.contains("Ignite")).collect()

当然igniteRDD提供save 和 查询功能

Ignite DataFrame

我觉得DataFrame才是Ignite与Spark结合的精髓,实在太简练了。代码也很容易读懂。

val spark: SparkSession = …

val cfgPath: String = “path/to/config/file”

val jsonDataFrame = spark.read.json(“path/to/file.json”)

jsonDataFrame.write
  .format(FORMAT_IGNITE)
  .option(OPTION_CONFIG_FILE, TEST_CONFIG_FILE)
  .option(OPTION_TABLE, "json_table")
  .option(OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS, "id")
  .option(OPTION_CREATE_TABLE_PARAMETERS, "template=replicated")
  .save()

学习一门技术从了解到熟悉,就像认识一个人,需要耗费大量的时间和精力,回头看才会发现自己是那么的傻呆,但是又不得不经历,Better days

Author: TangDon
Link: lilyhuli.github.io/2019/11/29/Ignite与Spark/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶