我试图在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读取文件。 任何人都可以告诉我如何解决这个问题?
提前致谢!