Gryoデータの読み込み

DSE Graph Loaderを使用してGryoデータを読み込む方法。

バイナリ・ファイル形式のGryoは、DSE Graphとの間でデータをインポートおよびエクスポートするためのファイル形式の1つです。GryoはKryoのGremlinバリアントで、Java用の高速で効率の良いオブジェクト・グラフ・シリアライゼーション・フレームワークです。

Gryoデータのデータ・マッピング・スクリプトを説明付きで示します。スクリプト全文は、ページの最後にあります。
注: DSE Graph Loaderでは、DSE GraphまたはTinkerGraphで生成されたGryoファイル、すなわち、Apache TinkerPopに含まれているインメモリー・グラフ・データベースを読み込むことができます。DSE Graphで生成されたGryoファイルは、TinkerGraph Gryoファイルと形式が異なるため、各ソースからデータを読み込むためのマッピング・スクリプトが異なります

手順

  • 必要に応じて、マッピング・スクリプトに構成を追加します。
  • データ入力ファイルを指定します。変数inputfiledirは、入力ファイルのディレクトリーを指定します。指定されたファイルは、読み込みで使用されます。
    // DATA INPUT
    // Define the data input source 
    // inputfiledir is the directory for the input files 
    
    inputfiledir = '/tmp/Gryo/'
    recipeInput = Graph.file(inputfiledir + 'recipe.gryo').gryo()
    Gryo入力ファイルがDSE Graphから生成される場合、追加手順dse()によって、入力データをストリーミングできるため、大きなファイルの転送が容易になります。
    // DATA INPUT
    // Define the data input source 
    // inputfiledir is the directory for the input files 
    
    inputfiledir = '/tmp/Gryo/'
    recipeInput = Graph.file(inputfiledir + 'recipe.gryo').gryo().dse()
  • ファイルをgryoファイルとして指定し、追加手順gryo()によって、このファイルをGryoファイルとして処理する必要があることが識別されます。マップrecipeInputが作成され、データの処理に使用されます。
    recipeInput = Graph.file(inputfiledir + 'recipe.gryo')
    File.csvまたはFile.jsonとは対照的に、Graph.fileが使用されることに注意してください。
    ヒント: java.io.Fileオブジェクトにアクセスする場合は、最初の呼び出しを完全に名前空間で指定します。そうしないと、DSE Graph Loaderによって、ファイル・オブジェクトがオーバーライドされます。
    currentDir = new java.io.File('.').getCanonicalPath() + '/'
    source = Graph.file(currentDir + 'myfile.kryo').gryo()
  • マッピング・スクリプトの本文を作成します。マッピング・スクリプトのこの部分は、ファイル形式に関係なく同じです。ただし、Gryoファイルではわずかに変更されたバージョンが使用されます。
  • Gryoの読み込みに、DSE Graph Loaderをdry runとして実行するには、次のコマンドを使用します。
    graphloader recipeMappingGRYO.groovy -graph testGRYO -address localhost -dryrun true

    テスト目的の場合、graphloaderの実行前に、指定されたグラフが存在する必要はありません。ただし、プロダクション・アプリケーションの場合は、グラフとスキーマを作成してから、graphloaderを使用する必要があります。

  • 読み込みスクリプトの全文は次のようになります。
    /* SAMPLE INPUT
    Gryo file is a binary file
     */
    
    // CONFIGURATION
    // Configures the data loader to create the schema
    config create_schema: true, load_new: true
    
    // DATA INPUT
    // Define the data input source 
    // inputfiledir is the directory for the input files 
    
    inputfiledir = '/tmp/GRYO/'
    recipeInput = Graph.file(inputfiledir + 'recipe.gryo').gryo()
      
    load(recipeInput.vertices()).asVertices {
        labelField "~label"
        key "~id", "id"
    }
    
    load(recipeInput.edges()).asEdges {
        labelField "~label"
        outV "outV", {
            labelField "~label"
            key "~id", "id"
        }
        inV "inV", {
            labelField "~label"
            key "~id", "id"
        }
    }