2016-03-29 52 views
1

ファイルhelloworld.txtを作成しました。今度はファイルから読み込み、ファイルの内容をキャッシュに読み込み、キャッシュが更新されるたびにファイルに書き込む必要があります。テキストファイルから読み込むときにApache Ignite Cacheを読み込む方法

これは、これまでの私のコードです:

指示は、ApacheのIgniteの文書から明らかでないとして、キャッシュをロードして、ファイルへのキャッシュからの書き込みに何をすべきかを教えてください。

このページを参照してください。永続ストアからキャッシュをロードする方法については
import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

import org.apache.ignite.Ignite; 
import org.apache.ignite.IgniteCache; 
import org.apache.ignite.IgniteDataStreamer; 
import org.apache.ignite.IgniteException; 
import org.apache.ignite.Ignition; 
import org.apache.ignite.examples.ExampleNodeStartup; 
import org.apache.ignite.examples.ExamplesUtils; 

public class FileRead { 
    /** Cache name. */ 
    private static final String CACHE_NAME = "FileCache"; 


    /** Heap size required to run this example. */ 
    public static final int MIN_MEMORY = 512 * 1024 * 1024; 

    /** 
    * Executes example. 
    * 
    * @param args Command line arguments, none required. 
    * @throws IgniteException If example execution failed. 
    */ 
    public static void main(String[] args) throws IgniteException { 
     ExamplesUtils.checkMinMemory(MIN_MEMORY); 

     try (Ignite ignite = Ignition.start("examples/config/example-ignite.xml")) { 
      System.out.println(); 


      try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(CACHE_NAME)) { 
       long start = System.currentTimeMillis(); 

       try (IgniteDataStreamer<Integer, String> stmr = ignite.dataStreamer(CACHE_NAME)) { 
        // Configure loader. 
        stmr.perNodeBufferSize(1024); 
        stmr.perNodeParallelOperations(8); 

        ///FileReads(); 

        try { 
        BufferedReader in = new BufferedReader 
        (new FileReader("/Users/akritibahal/Desktop/helloworld.txt")); 
        String str; 
        int i=0; 
        while ((str = in.readLine()) != null) { 
        System.out.println(str); 
        stmr.addData(i,str); 
        i++; 
         } 
        System.out.println("Loaded " + i + " keys."); 
        } 
        catch (IOException e) { 
        } 


       } 


      } 
     } 
    } 

} 

答えて

1

https://apacheignite.readme.io/docs/data-loading

あなたは2つのオプションがあります。

  1. スタートクライアントノードを、IgniteDataStreamerと使用を作成しますそれはデータをロードすることです。ファイル内の各行に対してaddData()と呼ぶだけです。
  2. CacheStore.loadCache()メソッドを実装するには、キャッシュ設定で実装を提供し、IgniteCache.loadCache()を呼び出します。

2番目のアプローチでは、ノード間で通信が行われないため、すべてのサーバーノードにファイルを格納する必要があります。

+0

キャッシュから読み込み、ファイルに書き込んだり、ファイルに更新する方法を理解できません。このケースに格納されているキーを取得するにはどうすればよいですか? – user3591433

関連する問題