CSVデータの読み込み

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

CSVデータのデータ・マッピング・スクリプトを説明とともに示します。完全なスクリプトは、ページの最後にあります。

入力CSVファイルでは厳密な形式を使用する必要があり、ファイルの最初の行はグラフで使用されるプロパティ・キーを識別します。labelFieldを使用する頂点ラベルの操作など、より柔軟性が必要な場合は、「TEXTデータの読み込み」を参照してください。

手順

  • 必要に応じて、マッピング・スクリプトに構成を追加します。
  • 読み込み対象のデータのサンプルは以下のようになります。
    SAMPLE INPUT
    // author.csvファイル用:
    name|gender 
    Julia Child|F
    // book.csvファイル用:
    name|year|ISBN
    Simca's Cuisine:100 Classic French Recipes for Every Occasion|1972|0-394-40152-2
    // authorBook.csvファイル用: 
    bname|aname
    Simca's Cuisine:100 Classic French Recipes for Every Occasion|Simone Beck

    プロパティ・キーnameは、authorBookファイルの頂点ラベルauthorおよびbookの両方に使用されるため、変数anameおよびbnameは著者名および書名にそれぞれ使用されます。これらの変数は、author頂点とbook頂点間の辺を作成するためのマッピング・ロジックで使用されます。

  • データ入力ファイルを指定します。変数inputfiledirは、入力ファイルのディレクトリーを指定します。識別された各ファイルは、読み込みに使用されます。
    // DATA INPUT
    // データ入力ソース(コマンドライン引数で指定可能なファイル)を定義します
    // inputfiledirは入力ファイルのディレクトリーです
    
    inputfiledir = '/tmp/CSV/'
    authorInput = File.csv(inputfiledir + 'author.csv').delimiter('|')
    bookInput = File.csv(inputfiledir + 'book.csv').delimiter('|')
    authorBookInput = File.csv(inputfiledir + 'authorBook.csv').delimiter('|')

    CSVファイルにはフィールド名を示すヘッダー行が含まれている必要があることに注意してください。たとえば、authorInputには、ファイルの最初の行に以下の内容が含まれています。

    name|gender
  • 各行で、ファイルはcsvファイルとして指定され、ファイル名が指定され、デリミターが設定されます。マップauthorInputが作成され、データの処理に使用されます。このマップは、transformsを使用して読み込む前に操作できます。
    authorInput = File.csv(inputfiledir + 'author.csv').delimiter('|')
  • マッピング・スクリプトの本文を作成します。マッピング・スクリプトのこの部分は、ファイル形式にかかわらず同じです。
  • ドライ・ランとしてCSV読み込みにDSE Graph Loaderを実行するには、以下のコマンドを使用します。
    graphloader authorBookMappingCSV.groovy -graph testCSV -address localhost -dryrun true

    テスト目的の場合、graphloaderの実行前に、指定されたグラフが存在する必要はありません。ただし、実稼働用途では、graphloaderを使用する前にグラフとスキーマを作成する必要があります。

  • 完全なスクリプトは以下のとおりです。
    /* SAMPLE INPUT
    author:Julia Child|F
    book :Simca's Cuisine:100 Classic French Recipes for Every Occasion|1972|0-394-40152-2
    authorBook:Simca's Cuisine:100 Classic French Recipes for Every Occasion|Simone Beck
     */
    
    // CONFIGURATION
    // スキーマを作成するようにデータ・ローダーを構成します
    config create_schema:true, load_new:true, load_threads: 3
    
    // DATA INPUT
    // データ入力ソース(コマンドライン引数で指定可能なファイル)を定義します
    // inputfiledirは入力ファイルのディレクトリーです
    
    inputfiledir = '/tmp/CSV/'
    authorInput = File.csv(inputfiledir + "author.csv").delimiter('|')
    bookInput = File.csv(inputfiledir + "book.csv").delimiter('|')
    authorBookInput = File.csv(inputfiledir + "authorBook.csv").delimiter('|')
    
    //(定義済みインラインとして)いずれかのマッパーを使用して読み込むデータ・ソースを指定します
      
    load(authorInput).asVertices {
    label "author"
    key "name"
    }
    
    load(bookInput).asVertices {
    label "book"
    key "name"
    }
    
    load(authorBookInput).asEdges {
    label "authored"
    outV "aname", {
    label "author"
    key "name"
        }
    inV "bname", {
    label "book"
    key "name"
        }
    }