Метод сокращения Hadoop ведет себя так, как я не могу рассуждатьJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Метод сокращения Hadoop ведет себя так, как я не могу рассуждать

Сообщение Гость »


Я пытаюсь объединить два файла. Это моя (избыточная с исключениями отладки) функция сокращения:

Код: Выделить всё

public void reduce(Text key, Iterable values, Context context) throws IOException,  InterruptedException {
Text w1 = new Text();
Text w2 = new Text();
List arr = new ArrayList();
List debugging = new ArrayList();
long c_w1 = -1;
for(Text value: values){
debugging.add(value);
try{
StringTokenizer str = new StringTokenizer(value.toString());
if(str.countTokens() == 1){
throw new Exception("special exception1. countTokens: "+str.countTokens() + " c_w1: " + c_w1);
//context.write(key, value);
//continue;
}
w1 = new Text(str.nextToken());
w2 = new Text(str.nextToken());
if(str.countTokens() == 1){ // c(w1)

c_w1 = Long.parseLong(str.nextToken());
continue;
}
else if(value.toString().contains(uniqueWord)){
throw new Exception("special exception2. countTokens: "+str.countTokens() + " c_w1: " + c_w1);
}
else{ // an entire entry
if(value.toString().contains(uniqueWord))
throw new Exception("special exception3. countTokens: "+str.countTokens() + " c_w1: " + c_w1);
arr.add(value);
}
}catch(Exception e){
throw new IOException("key: "+key.toString() +" value: "+value.toString()+" the last stacktrace: "+e.getMessage());
}
}
for( Text value : arr){
try{
if(value.toString().contains(uniqueWord))
throw new Exception("special exception4. arr length: " +arr.size()+ " c_w1: " + c_w1);
Text ans = new Text("w1:"+c_w1);
context.write(value, ans);
}catch(Exception e){
throw new IOException("key: "+key.toString() +" value: "+value.toString()+" the last stacktrace: "+e.getMessage());
}
}
}
I added all of these "spcial exceptions" in order to debug (Since System.out.println does'nt work when run on the cloud). The result:

Error: java.io.IOException: key: N.T.O._NOUN value:
N.T.O._NOUN 43uireoaugibghui4reagf 13 the last stacktrace: special
exception4. длина arr: 1 c_w1: 13 в
JoinW1$ReducerClass.reduce(JoinW1.java:150) в
JoinW1$ReducerClass.reduce(JoinW1.java:1) в
org.apache. Hadoop.mapreduce.Reducer.run(Reducer.java:171) в
org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:635)
в org.apache.hadoop.mapred. УменьшитьTask.run(ReduceTask.java:390) по адресу
org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) по адресу
java.security.AccessController.doPrivileged (собственный метод) в
javax.security.auth.Subject.doAs(Subject.java:422) в
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
в org .apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Blockquote
Blockquote

Мало что не получается смысл здесь.
Во-первых, если специальное исключение 4 возникает из-за значения != uniqueWord, специальное исключение 3 должно было быть вызвано раньше!
Во-вторых, запись

Код: Выделить всё

N.T.O._NOUN 43uireoaugibghui4reagf 13
doesnt even exist in the input files!
Worth mentioning that

Код: Выделить всё

String unqiueWord = "43uireoaugibghui4reagf"
is a static, predefined variable.
The input im running the job on is these two files:

Код: Выделить всё

N.T.O._NOUN _NOUN_  1960's  13
nt  should_VERB 1960's  40
ntW _NOUN_  1960's  12
nt_NOUN as_ADP  1960's  53
nt_VERB ^_NUM   1960's  17
nterpretat  ion_NOUN    1960's  7
and

Код: Выделить всё

43uireoaugibghui4reagf  ^_NUM   17
43uireoaugibghui4reagf  _NOUN_  25
43uireoaugibghui4reagf  as_ADP  53
43uireoaugibghui4reagf  ion_NOUN    7
43uireoaugibghui4reagf  should_VERB 40
N.T.O._NOUN 43uireoaugibghui4reagf  13
nt  43uireoaugibghui4reagf  40
ntW 43uireoaugibghui4reagf  12
nt_NOUN 43uireoaugibghui4reagf  53
nt_VERB 43uireoaugibghui4reagf  17
nterpretat  43uireoaugibghui4reagf  7
where the result should be joining together lines that have the same first word, taking the entire tuple of the first file and the last number of the second file to form a new tuple.
Example:

Код: Выделить всё

ntW    _NOUN_  1960's  12
and

Код: Выделить всё

ntW   43uireoaugibghui4reagf  12
would result in:

Код: Выделить всё

ntW _NOUN_  1960's  12 w1:12


Источник: https://stackoverflow.com/questions/781 ... ason-about
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Не удалось преобразовать org.apache.hadoop.fs.FileSystem$Cache. Класс org.apache.hadoop.fs.FileSystem$Cache$Key замороже
    Anonymous » » в форуме JAVA
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Не удалось преобразовать org.apache.hadoop.fs.FileSystem$Cache. Класс org.apache.hadoop.fs.FileSystem$Cache$Key замороже
    Anonymous » » в форуме JAVA
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Pyspark, Hadoop и S3: java.lang.NoSuchMethodError: org.apache.hadoop.fs.s3a.Listing$FileStatusListingIterator
    Anonymous » » в форуме Python
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Асинхронный метод не ведет себя асинхронно
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Метод codeigniter inform () ведет себя неожиданно с `get_where ()` против `get ()`
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»