我目前正在嘗試使用自定義InputSplit
和RecordReader
以及Apache Spark的SparkContext
hadoopRDD()
函數。Spark與Hadoop InputFormat混淆整合
我的問題是:
是否通過InpuSplit.getLenght()
和/或RecordReader.getProgress()
返回的值影響map()
功能的執行星火運行?
我在問,因爲我在Apache Hadoop上使用了這兩個自定義類,它們按預期工作。但是,在Spark中,我發現運行時會生成新的InputSplit
對象,這是我不想讓我的代碼執行的事情。更確切地說:
在執行開始時,我在我的日誌文件中看到生成了正確數量的InputSplit
對象(在本例中,我們只說1個)。接着,生成與該分割相關聯的RecordReader
對象,並開始提取記錄。在某個時候,我收到一條消息,說明正在處理以前的InputSplit
的作業會停止,並會產生一個新的作業InputSplit
。我不明白爲什麼會發生這種情況?是否與RecordReader.getProgress()
方法或InputSplit.getLength()
方法返回的值有關?
此外,我將InputSplit的長度定義爲一些任意大的字節數(即1GB)。此值是否會影響運行系統中產生的Spark作業的數量?
歡迎提供任何幫助和/或建議嗎?
謝謝 尼克
附註:1:我張貼這麼多問題道歉,但是Apache星火是通過HadoopRDD
S上的Hadoop的集成星火小文件的新工具。
P.S.-2:如果需要,我可以提供更多技術細節。