2016-05-18 9 views
3

にこの種のデータにアクセスする方法:いくつかのサンプルのデータは次の形式で格納されているスパーク

data/file1_features.mat 
    data/file1_labels.txt 
    data/file2_features.mat 
    data/file2_labels.txt 
    ... 
    data/file100_features.mat 
    data/file100_labels.txt 

data/file*_features.mat記憶機能と各行は試料です。各data/file*_labels.txtはそれらのサンプルのラベルを格納し、各行は数字(1,2,3、...など)です。 100ファイル全体で、合計約80 millionのサンプルがあります。

Sparkでは、このデータセットへのアクセス方法は?

私はspark-2.0.0-preview/examples/src/main/python/mllib/random_forest_classification_example.pyを確認しました。それは、次の行があります。

data = MLUtils.loadLibSVMFile(sc, 'data/mllib/sample_libsvm_data.txt') 
    (trainingData, testData) = data.randomSplit([0.7, 0.3]) 

私は./bin/pysparkでこの例を実行する、それがdataオブジェクトがPythonRDDであることを示しています。

PythonRDD[32] at RDD at PythonRDD.scala:48 

data/mllib/sample_libsvm_data.txtは単なるファイルです。私の場合、多くのファイルがあります。この場合は、RDDSparkにありますか?すべての100ファイルを1つの大きなファイルにマージし、例として処理する必要がありますか? Sparkエンジンを使用してデータセット(平均標準正規化または最小最大正規化)をスケーリングしたいと考えています。

+0

私は、拡張子が.matのファイルと拡張子が.txtの2種類のファイルがあります。すべてのファイルを単一のrddに読み込んで処理しますか?またはtxt/matファイルのみをロードしたいですか? – Shashi

+0

@Shashi、はい、両方のタイプのデータをロードしたいと思います。 '* .mat'ファイルは機能であり、' * .txt'ファイルはラベルです。私が正しく理解すれば、データは破られていると思う。したがって、 '* .mat'ファイル(例えばh5pyを使用して)を制御してnumpy配列にロードし、SparkのRDDにそれらを供給するための簡単なインタフェースを書くべきかどうか疑問です。次に、pysparkでRDDを使用できます。 – mining

答えて

1

単に

dir = "<path_to_data>/data" 
    sc.textFile(dir) 

スパークが自動的に処理するために、特定のファイルタイプをロードしたい場合、あなたはRDDにロードするファイルのための正規表現を使用することができ、そのディレクトリ

+0

ありがとうございます! '* .mat'ファイルも読み込みたいと思います。たぶん私はその機能を '* .txt'形式で保存するべきでしょう。あなたのソリューションは良いスタートです。 – mining

+0

名前を変更する必要はありません。すでにファイルを取り出します。 – javadba

+0

Sparkはすでに 'MATLAB'ファイルの読み込みをサポートしていますか?最初にMATLAB行列を '* .txt'形式に変換する必要があります。 – mining

1

内のファイルのすべてをピックアップポイント。

DIR = "データ/ *。TXT"

sc.textFile(DIR)

スパークは、すべてのファイルがTXT拡張子で終わるだろう。

+0

ありがとうございます! '* .mat'ファイルも読み込みたいと思います。たぶん私はその機能を '* .txt'形式で保存するべきでしょう。あなたのソリューションは良いスタートです。 – mining

関連する問題