MapReduceのレデューサーを書いているうちに問題が発生しました。 私は非常に大きなファイルの最初の10行を取得したいと私はループと休憩に使用されます。しかし、breakコマンドは、Hadoopの上のエラーを発射されたので、私は別の方法を探しています:sys.stdinから最初のN行をPythonの行ごとに取得する方法
for line in fileinput.input():
if(counter>limit):
break
line = line.strip()
print (line)
counter +=1
エラーログ:
Error: java.io.IOException: subprocess exited successfully
R/W/S=6936/19/0 in:NA [rec/s] out:NA [rec/s]
minRecWrittenToEnableSkip_=9223372036854775807 HOST=null
USER=s2132211
HADOOP_USER=null
last tool output: |29670 YOU HAVE AATO|
Broken pipe
at org.apache.hadoop.streaming.PipeReducer.reduce(PipeReducer.java:129)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:444)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:392)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
エラーを表示しますか? 'break'はPython言語の通常の部分であり、青からエラーを起こしてはいけません。 –
ローカルマシンでコードを実行するとBreakが機能しますが、Hadoop Serverではエラーが表示されます。私は今ログをアップロードします –
ああ私の悪い。私はつかまえました。私はあなたの質問を誤解しました。 –