Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2020-09-24, 03:02

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 2 篇文章 ] 
發表人 內容
 文章主題 : MAP分割資料問題
文章發表於 : 2014-03-24, 19:46 
離線

註冊時間: 2014-03-24, 19:30
文章: 1
JAZZ你好:

以下是我想發問的問題

我的輸入檔案為:
1 2 3 4 5
1 3 4 2 5
2 1 4 5 3
3 1 4 5 2
4 1 5 3 2

請問要如何在map中把此輸入檔存進一個二維陣列,以下是我的程式片段,但執行都只讀到第一行
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
int[][] array = new int[5][5];
int n = 0;
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
String[] str = itr.nextToken().split(" ");
for(int i = 0; i<str.length; i++)
array[n][i] = Integer.parseInt(str[i]);
n++;
}

希望能得到你的回覆,謝謝你 :)


回頂端
 個人資料 E-mail  
 
 文章主題 : Re: MAP分割資料問題
文章發表於 : 2014-03-26, 11:31 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
jingli 寫:
JAZZ你好:

以下是我想發問的問題

我的輸入檔案為:
1 2 3 4 5
1 3 4 2 5
2 1 4 5 3
3 1 4 5 2
4 1 5 3 2

請問要如何在map中把此輸入檔存進一個二維陣列,以下是我的程式片段,但執行都只讀到第一行
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
int[][] array = new int[5][5];
int n = 0;
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
String[] str = itr.nextToken().split(" ");
for(int i = 0; i<str.length; i++)
array[n][i] = Integer.parseInt(str[i]);
n++;
}
希望能得到你的回覆,謝謝你 :)


Hadoop 預設的 TextInputFormat 每次只會讀入一行,然後將讀入的這一行內容給 map() 函數。
因此,如果輸入格式無法改變,那就只能修改 InputFormat,例如改用 NLineInputFormat
http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapred/lib/NLineInputFormat.html
一次讀入多行。

- Jazz


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 2 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作