DSE Graph Loaderリファレンス

DSE Graph Loaderリファレンス。

構文

$ graphloader loadingScript [[-option value]...]
表 1. 凡例
構文規則 説明
イタリック体 変数値。ユーザー定義値と置き換えます。
[ ] 任意。角かっこ([])で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒(|)で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
[ -- ] コマンドライン・オプションとコマンド引数は、2つのハイフン(--)で区切ります。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。
オプションは、コマンドラインで呼び出すか、読み込みスクリプトに含めることができます。必須のオプションにはマークが付いています。
オプション データ型 デフォルト 説明
-abort_on_num_failures 整数 100 読み込みが中断される障害の回数。
-abort_on_prep_errors Boolean true 通常、準備時または中断した頂点の挿入フェーズ中にエラーが発生した場合は、これをfalseに設定すると、許容される障害の最大数に達するまでローダーは動作を続行します。
-address String 接続先のDSE GraphインスタンスのIPアドレス(およびポート)。必須
-allow_remote_hosts_in_quorum Boolean false

異なるデータ・センターのホストがローカル整合性レベルに参加できるようにし、リモート・データ・センターのノードを使用して、クエリーなどのQUORUMの整合性レベルに到達することができます。選択肢はtrueとfalseです。

-batch-size 整数 100 読み込むバッチのサイズ。
-compress String none ファイルの圧縮。選択肢はnone、gzip、およびxzipです。
-consistency_level CL ONE 選択肢は以下のとおりです。ANY、ONE、TWO、THREE、QUORUM、ALL、LOCAL_QUORUM、EACH_QUORUM、SERIAL、LOCAL_SERIAL、LOCAL_ONE.
-create_graph Boolean true ターゲット・グラフが存在するかどうかを確認し、グラフが存在せず、trueに設定されている場合は作成します。データ・センターに接続できない場合は、このオプションを使用すると、デフォルトのQUORUM整合性レベルで失敗が生じることがあります。
-create_schema Boolean true 欠落しているスキーマ要素について、スキーマを更新または作成するかどうか。
注: 正しいデータ型を使用してインデックスが作成されるように、データを読み込む前にスキーマを作成することを強くお勧めします。テストを行う目的にのみ、create_schemaをtrueに設定することをお勧めします。DSE 6.0では、この構成オプションは廃止予定であり、今後のリリースで削除されます。
-driver_retry_attempts 整数 3 リトライ試行回数。0より大きい場合、要求はいくつかの回復可能な障害の後に再送信されます。
-driver_retry_delay milliseconds 1000 ドライバーのリトライ間隔(ミリ秒単位)。
-dryrun Boolean false データ・インテグリティとスキーマ整合性を検証するためだけに試行を行うかどうか。グラフが存在しない場合でも、グラフは作成されません。
注: この構成オプションは、スキーマを検出し、変更を実行せずに欠落しているスキーマを示唆してくれます。DSE 6.0では、このオプションは廃止予定であり、今後のリリースで削除される可能性があります。
-filename String 頂点データの読み込み元のファイル。マッピング・スクリプトで定義されていない場合は必須。
-graph String 読み込み先のグラフの名前。必須
-label String データが追加される頂点のラベル。空白のままにした場合は、入力ファイルの名前が頂点ラベル名として使用されます。
-load_failure_log String load_failures.txt 失敗したレコードが格納されるファイルの名前と場所。
-load_new Boolean false 読み込まれた頂点が新規で、グラフにまだ存在しないかどうか。
-load_edge_threads 整数 0 グラフにエッジおよびプロパティ・データを読み込むために使用するスレッドの数(0を指定すると、値は強制的にDC * 6のノード数になります)。
-load_vertex_threads 整数 0 グラフに頂点を読み込むために使用するスレッドの数(0を指定すると、値は強制的にコアの数/2になります)。
-preparation Boolean true 必要に応じて、データを分析してスキーマを更新するための準備を行うかどうか。
注: この構成オプションは、create_schemaと共に使用した場合に、スキーマを検証して作成します。デフォルトではfalseに設定されます。このオプションはDSE 6.0で廃止予定です。今後のリリースでは、削除される可能性があります。
-preparation_limit Integer 0 準備段階で、スキーマを更新する必要があるかどうかを判断するために使用するレコード数。0は制限がないことを示します。
-queue-size 整数 10000 データ取得キューのサイズ。
-read_threads 整数 1 データ入力からデータを読み取るために使用するスレッドの数。
-remote_hosts_in_dc 整数 2 クエリーの整合性レベルに参加できるリモート・ノードの数。
-reporting_interval 整数 1 ログに書き込まれた各進行状況レポートの間隔(秒単位)。
-schema_output String proposed_schema.txt dry-runを実行する際に提案されたスキーマを保存するファイルの名前。無効にする場合は、空白のままにします。
-skip_blank_values Boolean true falseの場合、ローダーはCSVファイルのすべての未指定(空/空白)のプロパティ値に空白("")を挿入します。
-timeout 整数 120000 接続がタイムアウトになるまでの時間(ミリ秒単位)。
-v | --version なし なし DSE Graph Loaderのバージョンを印刷します。
-vertex_complete Boolean false ローダーは、この読み込みでプロパティとエッジによって参照されたすべての頂点が、この読み込みの頂点にも含まれると見なします。エッジ・データやプロパティ・データ・ファイルから新たに頂点が作成されることはありません。
-username String DSE認証のユーザー名。
-password String DSE認証のパスワード。
-ssl Boolean false SSLを有効にします。
-kerberos Boolean false kerberosを有効にします。
-sasl String kerberosとの併用に使用されるオプションのsaslプロトコル名。
セキュリティ・オプション:
オプション データ型 デフォルト 説明
-kerberos Boolean false kerberosを有効にします。
-password String DSE認証のパスワード。
-sasl String kerberosとの併用に使用されるオプションのsaslプロトコル名。
-ssl Boolean false SSLを有効にします。
-username String DSE認証のユーザー名。

説明

DSE Graph Loaderは、最大1億個の頂点と10億個のエッジを読み込むためのユーティリティです。このユーティリティは、メモリー内のすべての頂点をキャッシュ可能で、読み込みプロセスの並列処理が可能なほどのコアを持つ、十分に強力なコンピューター上で実行されます。負荷がさらに大きい場合は、ユーティリティを別のマシン上で実行する必要があります。

DSE Graph Loaderは、引数としての読み込みスクリプトと、構成オプションと値のペアの変数を持つコマンドラインで呼び出されます。読み込みスクリプトは、読み込まれる入力データと、そのデータをグラフにマップする方法を指定します。読み込みスクリプトによって、オプションと値のペアも構成できます。

読み込みプロセスには以下の3つの段階があります。
準備
入力データ全体を読み取ります。この段階で、データがグラフ・スキーマに一致するか、指定されたデータ(有効な場合)に従ってグラフ・スキーマが更新されます。この段階が終了すると、グラフに追加されるデータの量に基づいて統計的な推定値が指定されますが、データは読み込まれません。Set
-dryrun true
準備段階は終了し、何らかの変化が生じる前に読み込みプロセスが中断されます。出力を検査し、予想と一致していることを確認します。大きなデータセットの場合は、エラーを見つけるためにdry runを実行することが重要です。
頂点の読み込み
第2段階では、入力データ内のすべての頂点を追加または取得し、ローカルでキャッシュして、後続のエッジの読み込み時間を短縮します。
エッジとプロパティの読み込み
すべてのエッジとプロパティを入力データからグラフに追加します。

読み込みスクリプトまたはマッピング・スクリプトは、入力ファイルからグラフへのデータの読み込みに使用する特定のマッピングを指定するために必要です。DSE Graph Loaderは、CSV、JSON、区切りテキスト、および正規表現で解析されたテキストという4つのファイルベースのデータ入力タイプをサポートしています。ファイルベースの入力形式はすべて、入力データ・ファイルの圧縮をサポートしています。

読み込みプロセス中のロギングは、トラブルシューティングが必要な場合に役立つ情報を提供します。読み込みプロセスの3つの段階は、ログに詳しく記録されます。

使用可能なオプションのリストを取得するには、-helpを使用します。
$ graphloader -help
この例では、読み込みスクリプトmymapscript.groovyを使用して、ファイル/tmp/recipe/all.datのデータをlocalhost上で実行中のグラフtestに読み込みます。データを挿入せずに読み込みをテストするには、dry runを指定します。
$ graphloader mymapscript.groovy -filename /tmp/recipe/all.dat -graph test -address localhost -dryrun true
この例では、読み込みスクリプトcsv2Vertex.groovyを使用して、ファイルMyUsers.csvのデータをlocalhost上で実行中のグラフcsvTestに読み込みます。-labelオプションによって、頂点ラベルはファイル名MyUsersではなく、Userになるように指定されます。
$ graphloader ./scripts/csv2Vertex.groovy -filename MyUsers.csv -graph csvTest -label User -address 127.0.0.1
読み込みスクリプトで構成設定も指定できます。create_schemaをtrueに設定し、load_vertex_threadsを3に設定する読み込みスクリプトの断片を以下に示します。
// CONFIGURATION
// Configures the data loader to create the schema and set load_vertex_threads to 3
config load_new: true, load_vertex_threads: 3
デフォルトでは、graphloaderは、graphloaderが実行されるディレクトリーのファイルloader.logにデバッグ情報を記録します。ログの場所は、-load_failure_logを使用して指定できます。
$ graphloader mymapscript.groovy -graph test -address localhost -load_failure_log /tmp/dgl.log
情報を別の形で記録するために、log4jを変更した方が良い場合は、構成ファイルを作成して、-load_failure_logと一緒に使用することができます。サンプル構成ファイルは以下のようになります。
# Set root logger level to the designated level and its appenders to F1 and stdout
log4j.rootLogger=INFO, WARN, A1, stdout
#/dev/stdout
# Log INFO messages to A1.  A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Target=System.out
log4j.appender.A1.Threshold=INFO
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Direct INFO log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=INFO
# stdout uses PatternLayout.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
また、サンプルのgraphloaderコマンドは、
$ java -Dlog4j.configuration=file:./lib/log4j.properties -jar graphLoaderJar mymapscript.groovy -graph test -address localhost -load_failure_log /dev/stdout
ログ情報をstdoutに書き込みます。

準備段階には、追加のオプションがあります。入力データを使用してスキーマを検出するには、-preparation trueを使用します。準備においてスキーマに欠落している要素が見つかった場合、-create_schema trueであれば要素を追加することができます。-create_schema falseの場合は、必要であれば準備を行うことができますが、スキーマ作成は手動で行う必要があります。-preparation trueとせずに-create_schema trueを設定すると、ジョブが停止します。データで記述されるスキーマを検出するデータをサンプリングしないと、スキーマの方法がわからないため、graphloaderでスキーマを作成することができません。要約すると、スキーマを手動で作成する際には、-preparation true -create_schema falseを使用します。graphloaderでスキーマを自動作成するには、-preparation true -create_schema trueを使用します。

認証を使用するには、-user-passwordを使用してgraphloaderを構成します。
$ graphloader mymapscript.groovy -graph test -address localhost -username myName -password myPasswd
SSL暗号化とKerberosを使用してgraphloaderを構成するには、以下のようにします。
$ java -Djavax.net.ssl.trustStore=<TRUSTSTORE_PATH> -Djavax.net.ssl.trustStorePassword=<PASSWORD> -Djavax.net.ssl.keyStore=<KEYSTORE_PATH> \ -Djavax.net.ssl.keyStorePassword=<PASSWORD> -jar dse-graph-loader-5.0.3-uberjar.jar -kerberos true -sasl dsename -graph new -address localhost mymapscript.groovy
トラストストアとキーストアのjavaオプションをcassandra-env.shで設定すると、コマンドが簡素化されます。
$ java -jar dse-graph-loader.jar -kerberos true -sasl dsename -graph new -address localhost mymapscript.groovy

実行時パラメーター

特定の条件を設定する必要がある場合は、一部を変更する必要があります。たとえば、JARファイルを直接実行してJava修飾子を使用したり、graphloaderスクリプトを変更して、追加のパラメーターを設定できるようにすることができます。

大きなデータ・セットを読み込む場合は、すべての頂点をキャッシュするようにヒープ・スペースを構成します。このコマンドによってJavaが実行され、DSE Graph Loaderのjarファイルが呼び出されます。例を次に示します。
$ java -Xmx10g -jar dse-graph-loader.jar
頂点のキャッシングは一時ディレクトリーを使用して、読み込み中にデータを格納します。一時ディレクトリーの大きさが足りない場合は、読み込みがブロックされます。一時ディレクトリーの場所を変更するには、実行時変数LOADER_TMP_DIRを使用します。
$ LOADER_TMP_DIR=/home/user ./graphloader -graph new -address localhost mymapscript.groovy

読み込みに成功した場合

graphloaderで指定したデータが正常に読み込まれると、結果の通知が/var/lib/cassandra/system.logに記録されます。
2017-02-09 23:27:22 INFO Reporter:97 - Current total additions: 1155735 vertices 1982536 edges 6583940 properties 0 anonymous