MRJOB映射器中的sys.stdout.write()输出到哪里?

3

mrjob.conf

runners:
  emr:
    aws_access_key_id: **
    aws_secret_access_key: **
    aws_region: us-east-1
    aws_availability_zone: us-east-1a
    ec2_key_pair: scrapers2
    ec2_key_pair_file: ~/arachnid.pem
    ec2_instance_type: c3.8xlarge
    ec2_master_instance_type: c3.8xlarge
    num_ec2_instances: 3
    python_bin: python2.6
    interpreter: python2.6
    ami_version: 2.4.11
    iam_job_flow_role: EMR_DefaultRole
    jobconf: {"mapred.task.timeout": 600000, "mapred.output.direct.NativeS3FileSystem": false}
    base_tmp_dir: /tmp
    enable_emr_debugging: true
    cmdenv:
        TZ: America/New_York
    s3_log_uri: s3://mrjob-lists/tmp/logs/
    s3_scratch_uri: s3://mrjob-lists/tmp/
    output_dir: s3://mrjob-lists/output
    ssh_tunnel_is_open: true
    ssh_tunnel_to_job_tracker: true

我正在使用 EMR 运行作业,我的 Mapper 任务有:

print "test"

除此之外
sys.stdout.write("TEst")

然而,我在S3的stdout文件中找不到这个输出。输出被写到哪里了?
1个回答

1
一个Hadoop 1作业的mapper标准输出应该出现在S3日志中的/task-attempts/job_#####_##/attempt_#####_##_##/stdout.gz路径下。这些日志需要一段时间才能推送到S3。如果您保持群集运行,可以检查Hadoop JobTracker网络接口,并确保作业执行后本地日志中也会出现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接