Je lance pyspark sur un cluster Amazon EMR. J'ai un script de test très simple pour voir si je peux écrire des données à l'aide s3-soumettre étincelle ...pyspark saveAsTextFile fonctionne pour python 2.7 mais pas 3.4
from pyspark import SparkContext
sc = SparkContext()
numbers = sc.parallelize(range(100))
numbers.saveAsTextFile("s3n://my-bucket/test.txt")
sc.stop()
Quand je lance ce script en utilisant soumettre étincelle dans un environnement de python2.7, cela fonctionne très bien . Mais quand je tente d'exécuter le même script dans un environnement python3.4, je reçois le retraçage suivant ...
Caused by: org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File ".../pyspark/worker.py", line 161, in main
func, profiler, deserializer, serializer = read_command(pickleSer, infile)
File ".../pyspark/worker.py", line 54, in read_command
command = serializer._read_with_length(file)
File ".../pyspark/serializers.py", line 164, in _read_with_length
return self.loads(obj)
File ".../pyspark/serializers.py", line 419, in loads
return pickle.loads(obj, encoding=encoding)
AttributeError: Can't get attribute 'unicode' on <module 'builtins' (built-in)>
Je manipuler mon environnement python utilisant Conda et en définissant les variables PYSPARK_PYTHON
et PYSPARK_DRIVER_PYTHON
.
Y at-il un problème lors de l'utilisation de saveAsTextFile
dans python 3? Ou est-ce que je manque une étape dans la configuration de mon environnement python 3?
Merci!
Merci pour votre réponse! J'ai remplacé 'range (100)' par '['a', 'b', 'c', 'd']' et j'ai ajouté un 'configuration.json' qui définit' "PYSPARK_PYTHON": "/ usr/bin/python3 "'. Malheureusement, je reçois toujours la même erreur. –