gpt4 book ai didi

python - PySpark,调用saveAsTextFile时出错

转载 作者:行者123 更新时间:2023-12-02 21:41:20 24 4
gpt4 key购买 nike

这是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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com