我正在嘗試使用canova/datavec加載CSV數據集,但無法找到執行此操作的「慣用」方法。我覺得這個框架有了進化,這讓我很難確定什麼是相關的,哪些不相關。如何使用schema解析帶有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()
從我的角度來看,小白-來看,BasicDataVec-例子並不完全清楚,因爲他們將其鏈接到火花等。從IrisAnalysisExample(https://github.com/deeplearning4j/dl4j-examples/blob/master/datavec-examples/src/main/java/org/datavec/transform/analysis/IrisAnalysis.java)。 我假設文件內容首先被讀入JavaRDD(可能是Stream),然後再處理。除了DataAnalysis之外,不使用模式。
所以,可能有人讓我明白,我怎麼解析(如流或迭代器,一個CSV文件與頭描述爲第一線幫助
我從他們的著作了解(深學習:?一個從業人員辦法)需要進行數據轉換的火花(其中一個模式用於)我由此改寫了我的代碼。
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())
}
我現在認爲的模式將決定了我只能將有IID列,但輸出是:
[iid,id,gender,idg,.....]