2
我寫了下面的代碼在Python在Apache星火運行:地圖顯示功能的恢復「NoneType」
import sys
from pyspark import SparkContext
def generate_kdmer(seq):
res = []
beg2, end2 = k+d, k+d+k
last = len(seq) - end2 + 1
for i in range(last):
res.append([seq[i:i+k], seq[i+beg2:i+end2]])
return res.sort()
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: kdmer <file> <k> <d>, file=sys.stderr")
exit(-1)
sc = SparkContext(appName="KDmerGenerator")
k, d = int(sys.argv[2]), int(sys.argv[3])
lines = sc.textFile(sys.argv[1])
kdmer = lines.map(generate_kdmer).reduce(lambda a, b: a + b)
output = kdmer.collect()
for i in output:
print(str(i[0]) + ' | ' + str(i[1]))
sc.stop()
它產生錯誤:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType
的generate_kdmer功能應該返回一個列表,並且映射返回的列表將被附加到一個reduce中,但我不知道爲什麼它會一直返回'None'。我試圖在函數內部打印一些東西,但它在控制檯上什麼也沒有顯示,這個函數是否真的被執行了?有沒有更好的方式傳遞函數來映射Spark?