hadoop1版本中提供了獲取檔名的功能,就是在map階段可以獲取每一行記錄屬於哪個檔案,可以得到這個檔名,**如下:
//獲取檔名
inputsplit inputsplit=(inputsplit)context.getinputsplit();
string filename=((filesplit)inputsplit).getpath().getname();
這是hadoop1版本提供的方法。
對於spark也可以實現這個功能,使用的方式是本地測試的**,spark在本地執行的,**如下:
這裡要注意的是,引入的jar包不要錯,錯誤的話,方法就會報錯。引入的jar包是下面的:
import cn.wjpt.auditlogmanager
import org.apache.spark.sparkcontext
import org.apache.spark.sparkcontext._
import org.apache.spark.sparkconf
import org.apache.hadoop.mapred.lib.multipletextoutputformat
import org.apache.hadoop.io.text
import org.apache.hadoop.io.longwritable
import org.apache.spark.rdd.hadooprdd
import org.apache.hadoop.mapred.inputsplit
import org.apache.hadoop.mapred.filesplit
import org.apache.hadoop.mapred.textinputformat
這樣就搞定了。
Hadoop和spark中的區別
hadoop 在mapreduce中,步驟包括map,shuffle,reduce,其中combine和partition是函式。combine作用是將map後產生的鍵值對中,相同key的合併,產生新的鍵值對作為reduce的輸入。而partition的作用是根據key將鍵值對劃分給對應的reduc...
Hadoop 和 Spark 的異同
談到大資料,相信大家對hadoop和apache spark這兩個名字並不陌生。但我們往往對它們的理解只是提留在字面上,並沒有對它們進行深入的思考,下面不妨跟我一塊看下它們究竟有什麼異同。首先,hadoop和apache spark兩者都是大資料框架,但是各自存在的目的不盡相同。hadoop實質上更...
hadoop和spark的異同
解決問題的層面不一樣 首先,hadoop和apache spark兩者都是大資料框架,但是各自存在的目的不盡相同。hadoop實質上更多是乙個分布式資料基礎設施 它將巨大的資料集分派到乙個由普通計算機組成的集群中的多個節點進行儲存,意味著您不需要購買和維護昂貴的伺服器硬體。同時,hadoop還會索引...