canova/datavecを使用してCSVデータセットをロードしようとしていますが、その「慣用的な」方法を見つけることができません。私はフレームワークの進化があると感じるので少し苦労します。それは、私が関連するものとそうでないものを判断することを困難にします。スキーマを使用してdataVecでCSVファイルを解析する方法は?
object S extends App{
val recordReader:RecordReader = new CSVRecordReader(0, ",")
recordReader.initialize(new FileSplit(new File("./src/main/resources/CSVdataSet.csv")))
val iter:DataSetIterator = new RecordReaderDataSetIterator(recordReader, 100)
while(iter.hasNext){
println(iter.next())
}
}
私は、ヘッダの記述で始まるCSVファイルを持っているので、私の出力は例外
(java.lang.NumberFormatException: For input string: "iid":)
である私が原因で、スキーマの例外を取得するので、私は/、スキーマビルダーに探し始めましたヘッダーだから私はこのようなスキーマを追加することを考えていた。私の視点から
val schema = new Schema.Builder()
.addColumnInteger("iid")
.build()
、noobのビュー彼らはIrisAnalysisExample(https://github.com/deeplearning4j/dl4j-examples/blob/master/datavec-examples/src/main/java/org/datavec/transform/analysis/IrisAnalysis.java)からなどの火付け役にリンクするので、BasicDataVec-例は、完全に明確ではありません。 ファイルの内容が最初にJavaRDD(潜在的にストリーム)に読み込まれ、その後に処理されると想定します。スキーマはDataAnalysis以外は使用されません。だから、
、誰かが私は彼らの本(ディープ学習から理解して私は、ストリームまたはイテレータとして(最初の行にヘッダの記述を持つCSVファイルを解析する方法を理解
を行うことで助けることができる:A? 。私は、スキーマは、私が唯一のIID-列を持っているであろうことを指示するだろうと今思っ
object S extends App{
val schema: Schema = new Schema.Builder()
.addColumnInteger("iid")
.build
val recordReader = new CSVRecordReader(0, ",")
val f = new File("./src/main/resources/CSVdataSet.csv")
recordReader.initialize(new FileSplit(f))
val sparkConf:SparkConf = new SparkConf()
sparkConf.setMaster("local[*]");
sparkConf.setAppName("DataVec Example");
val sc:JavaSparkContext = new JavaSparkContext(sparkConf)
val lines = sc.textFile(f.getAbsolutePath);
val examples = lines.map(new StringToWritablesFunction(new CSVRecordReader()))
val process = new TransformProcess.Builder(schema).build()
val executor = new SparkTransformExecutor()
val processed = executor.execute(examples, process)
println(processed.first())
}
、実務家はその火花が私はこのように私のコードに書き直し(スキーマが使用されている)データ変換のために必要とされる)に近づきます出力は次のとおりです。