我有一个返回两个列的SQL查询。我需要在将结果映射到文件的同时加入其中。
我尝试了这个:
results = sqlContext.sql(query)
results.map(lambda p: ('::'.join(str(p.title),str(p.genres))).repartition(10).saveAsTextFile(sys.argv[2]))
这没有错误,它只是出于某种原因退出执行。
当查询仅返回一行时,我已经让它工作了:
results.map(lambda p: str(p.title)).repartition(10).saveAsTextFile(sys.argv[2])
我将如何使用定界线'::'
加入这两列?
我弄清楚了。这只是一个不足的括号的问题。我需要
results.map(lambda p: '::'.join(str(p.title), str(p.genres))).repartition(10).saveAsTextFile(sys.argv[2])
而不是
results.map(lambda p: ('::'.join(str(p.title),str(p.genres))).repartition(10).saveAsTextFile(sys.argv[2]))