所以我有一个RDD的二进制数据,我使用
创建它line = sc.binaryFiles("files/Videos",10)
line.map(lambda x:x[1]).pipe("cat").take(1)
我想将此数据传输到外部程序,但是我收到以下错误
> Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 723, in pipe_objs
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf3 in position 43: ordinal not in range(128)
有任何想法如何解决这个问题?
答案 0 :(得分:0)
您没有向我们展示您如何将数据传递给外部程序,但您可能需要以下内容:
f.write(line.encode('utf8'))
您可能希望io.open()使用合适的f
为您创建该文件句柄encoding=
,例如'utf8'。
请考虑从python2升级到python3 - 您将获得有关何时缺少编码或解码的更清晰的诊断信息。