seqdumperでシーケンスファイルの内容を表示させてみる。
-iでファイルのPathを指定すると、シーケンスファイルの内容が標準出力される。
$ bin/mahout seqdumper -i temp/pairwiseSimilarity/part-r-00000
上記はrecommenditembasedを動作させた際にできた一時フォルダの中にいるシーケンスファイルを表示したコマンド。
実行結果は下記。
Running on hadoop, using /usr/bin/hadoop and HADOOP_CONF_DIR=
MAHOUT-JOB: /home/user/workspace/mahout-distribution-0.7/examples/target/mahout-examples-0.7-job.jar
12/08/05 13:11:08 INFO common.AbstractJob: Command line arguments: {--endPhase=[2147483647], --input=[temp/pairwiseSimilarity/part-r-00000], --startPhase=[0], --tempDir=[temp]}
Input Path: temp/pairwiseSimilarity/part-r-00000
Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable
Key: 101: Value: {104:0.6642652860670908,102:0.7308816827558576}
Key: 102: Value: {104:0.7706663050064644}
Key: 103: Value: {105:0.34926773656784976}
Key: 104: Value: {}
Key: 105: Value: {}
Count: 5
12/08/05 13:11:09 INFO driver.MahoutDriver: Program took 573 ms (Minutes: 0.00955)
KeyとValueのクラスと、各レコードの値が表示される。
上記コマンドは通常HDFS上のファイルに対して実行される。
ローカルのファイルに対して行う場合は、URIでガチ指定してやるのが一番ミスしなさそうな気がする。
# さっきのファイルをローカルに落とす $ hadoop fs -get temp/pairwiseSimilarity/part-r-00000 /tmp/part-r-00000 # ローカルのファイルに対してseqdumperを実行 $ bin/mahout seqdumper -i file:///tmp/part-r-00000
-oで出力ファイルを指定できる。
$ bin/mahout seqdumper -i temp/pairwiseSimilarity/part-r-00000 -o dump.txt
$ cat dump.txt
Input Path: temp/pairwiseSimilarity/part-r-00000
Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable
Key: 101: Value: {104:0.6642652860670908,102:0.7308816827558576}
Key: 102: Value: {104:0.7706663050064644}
Key: 103: Value: {105:0.34926773656784976}
Key: 104: Value: {}
Key: 105: Value: {}
Count: 5
-cでレコードの件数だけ出力する。
$ bin/mahout seqdumper -c -i temp/pairwiseSimilarity/part-r-00000 Count: 5
-nで出力する件数を指定できる。大きなデータの一部だけ表示したい場合に使う。
$ bin/mahout seqdumper -n 2 -i temp/pairwiseSimilarity/part-r-00000
Input Path: temp/pairwiseSimilarity/part-r-00000
Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable
Max Items to dump: 2
Key: 101: Value: {104:0.6642652860670908,102:0.7308816827558576}
Key: 102: Value: {104:0.7706663050064644}
Count: 2
-b(--substring)で表示するValueの文字数の最大値を指定できる。
Valueに長い文章が入っている時に、前方50文字だけ出すとかそういう用途で使える。
下記は前方10文字のみ出力するよう指定。
$ bin/mahout seqdumper -b 10 -i temp/pairwiseSimilarity/part-r-00000
Input Path: temp/pairwiseSimilarity/part-r-00000
Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable
Key: 101: Value: {104:0.664
Key: 102: Value: {104:0.770
Key: 103: Value: {105:0.349
Key: 104: Value: {}
Key: 105: Value: {}
Count: 5
seqdumperの実態はmahout-utilsに入ってるorg.apache.mahout.utils.SequenceFileDumper。
100行程度の小さなコード。内容も単純に読んだ中身を出力しているだけ。
ただ、ここで使われているSequenceFileIteratorというクラス(シーケンスファイルの中身をIteratorっぽく回せる。mahout-coreに入っている)は他でも使いそうな気がした。