2016-04-06 7 views
2

kullanarak Kıvılcım İçeriğine önbellek yükleme Kıvılcım işimde 10M girişleri olan bir igniteRDD önbellek oluşturursam, tüm 10M'yi kıvılcım içeriğime yükler mi? Referans için aşağıda kodumu bulabilirsiniz. Yukarıdaki kodda Apache Ignite ve Apache Spark entegrasyonu, IgniteRDD

SparkConf conf = new SparkConf().setAppName("IgniteSparkIntgr").setMaster("local"); 
    JavaSparkContext context = new JavaSparkContext(conf);   


    JavaIgniteContext<Integer, Subscriber> igniteCxt = new JavaIgniteContext<Integer,Subscriber>(context,"example-ignite.xml"); 

    JavaIgniteRDD<Integer,Subscriber> cache = igniteCxt.fromCache("subscriberCache"); 

    DataFrame query_res = cache.sql("select id, lastName, company from Subscriber where id between ? and ?", 12, 15); 
    DataFrame input = loadInput(context); 
    DataFrame joined_df = input.join(query_res,input.col("id").equalTo(query_res.col("ID"))); 
    System.out.println(joined_df.count()); 

, subscriberCache fazla 10M girişleri sahip. Yukarıdaki kodun herhangi bir noktasında 10M Abone nesneleri JVM'ye yüklenecek mi? Ya da sadece sorgu çıktısını yükler? Bilginize

:

cevap

0

cache.sql(...) yöntem bu yapmadan önce verileri yüklemek gerekir, böylece Ignite bellek önbelleği zaten sorguları verileri (Tutuşturmak ayrı JVM çalışan). Bunun için IgniteRDD.saveValues(...) veya IgniteRDD.savePairs(...) yöntemini kullanabilirsiniz. Bunların her biri, tüm bölümler boyunca yinelenecek ve Spark'de bulunan tüm verileri Ateşlemeye dönüştürecektir.

Oluşan DataFrame ile yaptığınız tüm dönüşümler veya birleştirmeler, sürücüde yerel olarak yapılacaktır. Ignite SQL motorundan en iyi performansı almak için bunu olabildiğince önlemelisiniz.