繁体   English   中英

仅映射Spark中的作业(与hadoop流相比)

[英]Map only jobs in spark (vs hadoop streaming)

我有一个功能process_line从输入格式映射到输出格式

有些行已损坏,需要忽略。

我已成功将此代码作为python流作业运行:

for input_line in sys.stdin:
    try:
        output_line=process_line(input_line.strip())
        print (output_line)
    except:
        sys.stderr.write('Error with line: {l}\n'.format(l=input_line))
        continue

如何在pyspark中运行等效代码? 这是我尝试的:

input = sc.textFile(input_dir, 1)
output=lines.map(process_line)
output.saveAsTextFile(output_dir)

如何跟踪损坏的线路并统计其计数?

您试图将文本文件仅读取到一个分区,这可能导致您的作业运行缓慢,因为您基本上放弃了并行性。

尝试这样做:

input = sc.textFile(input_dir)
output = lines.map(process_line)
output.saveAsTextFile(output_dir)

至于损坏的行,可以在process_line函数中使用try-except机制,并可以将有问题的行写入某些日志文件,或者尝试执行其他逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM