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に入っている)は他でも使いそうな気がした。