使用子进程运行外部程序的Pyspark无法从hdfs读取文件

时间:2016-07-29 06:58:22

标签: apache-spark pyspark

我试图在pyspark中运行外部程序(例如bwa)。我的代码看起来像这样。

import sys
import subprocess
from pyspark import SparkContext

def bwaRun(args):
        a = ['/home/hd_spark/tool/bwa-0.7.13/bwa', 'mem', ref, args]
        result = subprocess.check_output(a)
        return result

sc = SparkContext(appName = 'sub')

ref =    'hdfs://Master:9000/user/hd_spark/spark/ref/human_g1k_v37_chr13_26577411_30674729.fasta'

input = 'hdfs://Master:9000/user/hd_spark/spark/chunk_interleaved.fastq'

chunk_name = []

chunk_name.append(input)

data = sc.parallelize(chunk_name,1)

print data.map(bwaRun).collect()

我用带有6个从属节点的纱线集群运行火花,每个节点都安装了bwa程序。当我运行代码时,bwaRun函数无法从hdfs读取输入文件。显而易见的这种情况并不起作用,因为当我尝试通过提供

在本地运行bwa程序时
bwa mem hdfs://Master:9000/user/hd_spark/spark/ref/human_g1k_v37_chr13_26577411_30674729.fasta hdfs://Master:9000/user/hd_spark/spark/chunk_interleaved.fastq
shell上的

无法正常工作,因为它无法从hdfs读取文件。 任何人都可以告诉我如何解决这个问题?

提前致谢!

0 个答案:

没有答案