2017-06-05 42 views
0

我是scala和java的新手,並試圖運行示例生產者代碼。它所做的只是,將一些原始產品和引用信息存儲在csv文件中,並使用rnd生成一些隨機日誌。以下是我的代碼:Scala中的日誌生成器對象

object LogProducer extends App { 
//WebLog config 
val wlc = Settings.WebLogGen 

val Products = scala.io.Source.fromInputStream(getClass.getResourceAsStream("/products.csv")).getLines().toArray 
val Referrers = scala.io.Source.fromInputStream(getClass.getResourceAsStream("/referrers.csv")).getLines().toArray 
val Visitors = (0 to wlc.visitors).map("Visitors-" + _) 
val Pages = (0 to wlc.pages).map("Pages-" + _) 

val rnd = new Random() 
val filePath = wlc.filePath 

val fw = new FileWriter(filePath, true) 

//adding randomness to time increments for demo 
val incrementTimeEvery = rnd.nextInt(wlc.records - 1) + 1 

var timestamp = System.currentTimeMillis() 
var adjustedTimestamp = timestamp 

for (iteration <- 1 to wlc.records) { 
    adjustedTimestamp = adjustedTimestamp + ((System.currentTimeMillis() - timestamp) * wlc.timeMultiplier) 
timestamp = System.currentTimeMillis() 
    val action = iteration % (rnd.nextInt(200) + 1) match { 
    case 0 => "purchase" 
    case 1 => "add_to_cart" 
    case _ => "page_view" 
    } 

    val referrer = Referrers(rnd.nextInt(Referrers.length - 1)) 
    val prevPage = referrer match { 
    case "Internal" => Pages(rnd.nextInt(Pages.length - 1)) 
    case _ => "" 
    } 

val visitor = Visitors(rnd.nextInt(Visitors.length - 1)) 
val page = Pages(rnd.nextInt(Pages.length - 1)) 
val product = Products(rnd.nextInt(Products.length - 1)) 

val line = s"$adjustedTimestamp\t$referrer\t$action\t$prevPage\t$visitor\t$page\t$product\n" 
fw.write(line) 

if (iteration % incrementTimeEvery == 0) { 
    //os.flush() 
    println(s"Sent $iteration messages!") 
    val sleeping = rnd.nextInt(incrementTimeEvery * 60) 
    println(s"Sleeping for $sleeping ms") 
    } 
} 
} 

這是非常簡單的,它基本上生成一些變量並將其添加到行中。

不過我正在對此我無法理解一個大的異常錯誤堆棧:

"C:\Program Files\Java\jdk1.8.0_92\bin\java... 

Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1 
at java.nio.charset.CoderResult.throwException(CoderResult.java:281) 
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) 
at java.io.InputStreamReader.read(InputStreamReader.java:184) 
at java.io.BufferedReader.fill(BufferedReader.java:161) 
at java.io.BufferedReader.readLine(BufferedReader.java:324) 
at java.io.BufferedReader.readLine(BufferedReader.java:389) 
at scala.io.BufferedSource$BufferedLineIterator.hasNext(BufferedSource.scala:70) 
at scala.collection.Iterator.foreach(Iterator.scala:929) 
at scala.collection.Iterator.foreach$(Iterator.scala:929) 
at scala.collection.AbstractIterator.foreach(Iterator.scala:1417) 
at scala.collection.generic.Growable.$plus$plus$eq(Growable.scala:59) 
at scala.collection.generic.Growable.$plus$plus$eq$(Growable.scala:50) 
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:104) 
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:48) 
at scala.collection.TraversableOnce.to(TraversableOnce.scala:310) 
at scala.collection.TraversableOnce.to$(TraversableOnce.scala:308) 
at scala.collection.AbstractIterator.to(Iterator.scala:1417) 
at scala.collection.TraversableOnce.toBuffer(TraversableOnce.scala:302) 
at scala.collection.TraversableOnce.toBuffer$(TraversableOnce.scala:302) 
at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1417) 
at scala.collection.TraversableOnce.toArray(TraversableOnce.scala:289) 
at scala.collection.TraversableOnce.toArray$(TraversableOnce.scala:283) 
at scala.collection.AbstractIterator.toArray(Iterator.scala:1417) 
at clickstream.LogProducer$.delayedEndpoint$clickstream$LogProducer$1(logProducer.scala:16) 
at clickstream.LogProducer$delayedInit$body.apply(logProducer.scala:12) 
at scala.Function0.apply$mcV$sp(Function0.scala:34) 
at scala.Function0.apply$mcV$sp$(Function0.scala:34) 
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
at scala.App.$anonfun$main$1$adapted(App.scala:76) 
at scala.collection.immutable.List.foreach(List.scala:389) 
at scala.App.main(App.scala:76) 
at scala.App.main$(App.scala:74) 
at clickstream.LogProducer$.main(logProducer.scala:12) 
at clickstream.LogProducer.main(logProducer.scala) 

Process finished with exit code 1 

有人可以幫我鑑定一下異常是什麼意思?謝謝所有

回答

0

所以它不是很難..這是我的業餘知識。這是一個簡單的IO異常,Intellij不能從我的csv文件中獲取值。當我將它導入資源根目錄時,它給了我一個錯誤編碼的警告信息。

錯誤是在這一點上:

val Products = scala.io.Source.fromInputStream(getClass.getResourceAsStream("/products.csv")).getLines().toArray

感謝儘管

努力