无法从Apache Spark RDD

时间:2018-03-12 00:54:25

标签: java scala apache-spark caching ignite

我正在尝试使用下面的代码(在scala中)从Spark应用程序执行对Ignite缓存(版本2.2)的简单插入:

val addresses=new util.ArrayList[String]()
addresses.add("127.0.0.1:48500..48520")

// IGNITE CONTEXT CONFIGURATIONS
 val igniteContext:IgniteContext=new IgniteContext(sc,()=>new IgniteConfiguration()
  .setDiscoverySpi(new TcpDiscoverySpi().
    setLocalPort(48511).setLocalPortRange(20).setIpFinder(new TcpDiscoveryVmIpFinder().setAddresses(addresses))),true)

// CHECKING IF Spark CACHE IS PRESENT
   println(igniteContext.ignite().cacheNames())
// RETURNS [Spark]

// FETCHING THE SPARK CACHE
val ignite_cache_rdd:IgniteRDD[String,Custom_Class] =igniteContext.fromCache[String,Custom_Class]("Spark")

  // SAVING PAIR_RDD TO CACHE
  ignite_cache_rdd.savePairs(ignite_PairRDD)

  //  PRINTING CONTENTS FROM CACHE
  ignite_cache_rdd.sql("select * from Custom_Class").show(truncate = false)
  //RETURNS AN EMPTY DATAFRAME

当转换为Dataframe时,ignite_PairRDD值字段的内容显示没有问题:

+-+-+-+
A |B |C|  
--------
22|6 |7|
+-+-+-+

问题是在使用“savePairs”并执行“show()”之后,Ignite缓存似乎是空的。

+-+-+-+
A |B |C|  
--------
  |  | |
+-+-+-+

“Spark”缓存具有以下配置(在java中):

 CacheConfiguration cache_conf=new CacheConfiguration<String,Custom_Class>().setCacheMode(CacheMode.PARTITIONED).setAtomicityMode(CacheAtomicityMode.ATOMIC).setBackups(1).
            setIndexedTypes(String.class,Custom_Class.class).setName("Spark");

使用以下结构创建“Custom_Class”:

public class Equity_Data implements Serializable {
  @QuerySqlField(index = true)
  private A;

  @QuerySqlField(index = true)
  private B;

@QuerySqlField(index = true)
  private C;
}

我确保检查缓存是否存在,并且SQL查询似乎是正确的,因为我没有收到任何错误,只是一个空数据帧。

我是否需要更改某些配置? 谢谢。

0 个答案:

没有答案