数据以下列形式存储:
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
百万个样本。
在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
只是一个文件。就我而言,有很多文件。 RDD
中是否有Spark
可以方便地处理此案例?是否需要将所有100
文件合并到一个大文件中并将其作为示例进行处理?我想使用Spark引擎来扩展数据集(mean-std normalization或min-max normalization)。
答案 0 :(得分:1)
简单点
dir = "<path_to_data>/data"
sc.textFile(dir)
Spark会自动获取该目录中的所有文件
答案 1 :(得分:1)
如果您需要特定于加载的文件类型进行处理,则可以使用正则表达式将文件加载到RDD中。
dir =&#34; data / * .txt&#34;
sc.textFile(DIR)
Spark会将所有文件以txt扩展名结尾。