尝试从apache的sharedRDD中检索数据点燃上下文

sru*_*ana 3 apache-spark ignite spark-dataframe

我正在尝试将apache点燃与火花融合,而且我是apache点燃的新手.我想将数据保存在分布式缓存中并检索它.

我通过在spark中加载文件并尝试使用Apache Ignite的sharedRDD.savePairs(key,value)保存在缓存中来创建数据框.键的类型为string,value的类型为spark dataframe.现在我想检索存储的数据并打印出来.我甚至不确定它是否实际上与类型数据帧一起保存.

dma*_*gda 5

要从RDD检索数据,您可以使用以下方法中的至少一种:

1)sharedRDD.filter(...).collect()方法.作为示例,下面的代码从名为"testCache"的缓存中获取包含单词"river"的所有值

val cache = igniteContext.fromCache("testCache")
val result = cache.filter(_._2.contains("river")).collect()
Run Code Online (Sandbox Code Playgroud)

使用'filter'方法读取值

2)sharedRDD.sql(...)方法.

val cacheRdd = igniteContext.fromCache("personsCache")
val result = cacheRdd.sql(
  "select name from Person where id > ? and id < ?", 10, 100)
Run Code Online (Sandbox Code Playgroud)

使用SQL获取值

  • @Srini可以在缓存中安全地使用DataFrame,但我认为没有任何意义.IgniteRDD是一个共享的**键值**RDD,它在一个集群中统一存储键值元组.当DataFrame作为值存储时,它将被放置到单个节点的单个分区,就像任何其他值(int,String等)一样.因此,如果您希望从中受益,如果IgniteRDD应该存储实际值而不是数据帧.如果您仍想使用IgniteRDD存储DataFrame,则可以使用Spark的rdd.collect()方法将其恢复. (2认同)