python - PySpark,调用saveAsTextFile时出错

标签 python hadoop apache-spark

这是mi首次尝试使用Python。我正在尝试将Python与Apache Spark结合使用。
这就是我想要做的:

l = sc.textFile("/user/cloudera/dataset.txt")
l = l.map(lambda x: map(int, x))

然后我使用笛卡尔函数来获取所有可能的元素组合
lc = l.cartesian(l)
现在我为每对夫妇应用一个函数:
output = lc.map(lambda x: str(x[0]) + ";" + str(x[1]) + ";" + str(cosineSim(x[0], x[1])))`

我的目标是获得像这样的字符串:
element1; element1; similarity
element1; element2; similarity
...

等等..

当我调用output.first()时,这是我的输出:
[45, 12, 7, 2, 2, 2, 2, 4, 7];[45, 12, 7, 2, 2, 2, 2, 4, 7];1.0

这是一个字符串,的确,如果我这样做:
s = output.first()
type(s)
<type 'str'>

但是如果我执行output.collect()或output.saveAsTextFile(path),则会出现此错误:
15/02/13 06:06:18 WARN TaskSetManager: Lost task 1.0 in stage 61.0 (TID 183, 10.39.127.148): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/usr/lib/spark/python/pyspark/worker.py", line 107, in main
process()
File "/usr/lib/spark/python/pyspark/worker.py", line 98, in process
serializer.dump_stream(func(split_index, iterator), outfile)
File "/usr/lib/spark/python/pyspark/serializers.py", line 227, in dump_stream
vs = list(itertools.islice(iterator, batch))
File "<stdin>", line 2, in <lambda>
ValueError: invalid literal for int() with base 10: ''

怎么了?

最佳答案

我认为此公式一定有错误:

l = l.map(lambda x: map(int, x))



您可以检查l RDD是否始终具有值(否”)吗?如果不是,则会出现一个典型的Python错误:

>在[32]中:int('')

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) in () ----> 1 int('')

ValueError: invalid literal for int() with base 10: ''



继续前进,请记住映射是惰性计算,这意味着直到指示了下一个 Action (收集和保存是 Action )时才计算它们。

关于python - PySpark,调用saveAsTextFile时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28501504/

相关文章:

python - 如何在 Python 中翻转 MRI 图像

python - 如何为已编译的 Python 扩展生成 .pyi 文件?

hadoop - Spark 和 HCatalog?

hadoop - HBase:表test在meta中不存在但有znode。运行 hbck 修复不一致(失败)

Scala Spark 1.5.2 RDD[任一[A,B]]

Scala Map 作为 Spark ML 模型的参数

python - Pandas 在数据框中拆分一列并获取标题

python - 如何计算多项式概率值?

java.io.IOException : File/tmp/hadoop-eo/mapred/system/jobtracker. 信息只能复制到 0 个节点,而不是 2 个

scala - 修改了spark中的countByKey