簡體   English   中英

Spark&Scala-RDD遍歷中的NullPointerException

[英]Spark & Scala - NullPointerException in RDD traversal

我有許多CSV文件,需要通過其文件名的一部分將它們組合成RDD。

例如,對於以下文件

$ ls   
20140101_1.csv  20140101_3.csv  20140201_2.csv  20140301_1.csv 
20140301_3.csv 20140101_2.csv  20140201_1.csv  20140201_3.csv 

我需要將名稱為20140101*.csv文件合並到RDD中以對其進行處理,依此類推。

我正在使用sc.wholeTextFiles讀取整個目錄,然后按文件sc.wholeTextFiles文件名分組以形成文件名字符串。 然后,我將字符串傳遞給sc.textFile以單個RDD形式打開文件。

這是我的代碼-

val files = sc.wholeTextFiles("*.csv")
val indexed_files = files.map(a => (a._1.split("_")(0),a._1))
val data = indexed_files.groupByKey

data.map { a =>
  var name = a._2.mkString(",")
  (a._1, name)
}

data.foreach { a =>
  var file = sc.textFile(a._2)
  println(file.count)
}

當我嘗試調用textFile時,我得到了SparkException - NullPointerException 錯誤堆棧引用RDD中的Iterator。 我無法理解該錯誤-

15/07/21 15:37:37 INFO TaskSchedulerImpl: Removed TaskSet 65.0, whose tasks have all completed, from pool
org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 65.0 failed 4 times, most recent failure: Lost task 1.3 in stage 65.0 (TID 115, 10.132.8.10): java.lang.NullPointerException
        at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1.apply(<console>:33)
        at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1.apply(<console>:32)
        at scala.collection.Iterator$class.foreach(Iterator.scala:727)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
        at org.apache.spark.rdd.RDD$$anonfun$foreach$1$$anonfun$apply$28.apply(RDD.scala:870)
        at org.apache.spark.rdd.RDD$$anonfun$foreach$1$$anonfun$apply$28.apply(RDD.scala:870)
        at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1765)
        at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1765)

但是,當我在spark外殼中執行sc.textFile(data.first._2).count時,我能夠形成RDD並能夠檢索計數。

任何幫助是極大的贊賞。

將評論轉換為答案:

var file = sc.textFile(a._2)

在另一個RDD的foreach中無法正常工作。 您不能像這樣嵌套RDD。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM