Hatena::Groupdann

dann's blog このページをアンテナに追加 RSSフィード

Fork me on GitHub

2010-03-17

Cassandraのデータのimportツール json2sstable

Cassandraのデータのimportツール json2sstable - dann's blog を含むブックマーク はてなブックマーク - Cassandraのデータのimportツール json2sstable - dann's blog Cassandraのデータのimportツール json2sstable - dann's blog のブックマークコメント

概要

JSONをimportして新しいsstableを作るのが、json2sstable。

使い方

Usage: json2sstable -K keyspace -c column_family <json> <sstable>

実装

パッケージとしては、org.apache.cassandra.tools。クラスはSSTableExportのimportJsonメソッド importJson(json, keyspace, cfamily, ssTable);

  • json-simple使って、指定されたjsonFileのパスを読んで、JSONオブジェクトを作る
  • partitionerからdecoratedKey群を取得して、そのキーに紐付けられたrowを、ColumnFamilyにCF追加
  • ColumnFamilyのserializerで作ったCFをシリアライズ
  • 最終的にシリアライズしたCFをSSTableWriterでwrite

Cassandraのデータのexportツール sstable2json

Cassandraのデータのexportツール sstable2json - dann's blog を含むブックマーク はてなブックマーク - Cassandraのデータのexportツール sstable2json - dann's blog Cassandraのデータのexportツール sstable2json - dann's blog のブックマークコメント

sstable2jsonの概要

sstableをjson化するsstable2jsonというツールが存在します。これはデータのexportに使います。sstable2jsonは、 -Data.dbで終わるsstableのファイルへのフルパスを引数にして、そのsstableをjson化してexportすることができます。

使い方

Usage: sstable2json [-f outfile] <sstable> [-k key [-k key [...]

実装

パッケージとしては、org.apache.cassandra.tools。クラスはSSTableExport。

  • オプションはcommons-cliでパース
  • exportする部分は、SSTableReaderでsstable開いて、SSTableScannerをreaderから取得して、Rowを順番にシリアライズしていく
  • シリライズするところは、StringBuilderでJSON作ってます