python – PySpark如何读取具有多个编码的字符串的文件
发布时间:2020-12-20 13:13:50 所属栏目:Python 来源:网络整理
导读:我正在编写一个 python spark实用程序来读取文件并进行一些转换. 文件有大量数据(最大12GB).我使用sc.textFile来创建RDD,逻辑是将每行从RDD传递给map函数,map函数依次将行拆分为“,”并运行一些数据转换(根据映射更改字段值). Sample line from the file. 00
我正在编写一个
python spark实用程序来读取文件并进行一些转换.
文件有大量数据(最大12GB).我使用sc.textFile来创建RDD,逻辑是将每行从RDD传递给map函数,map函数依次将行拆分为“,”并运行一些数据转换(根据映射更改字段值).
由于值“Privé”,我得到UnicodeDecodeError.我试着跟随解析这个值: if isinstance(v[12],basestring): v[12] = v[12].encode('utf8') else: v[12] = unicode(v[12]).encode('utf8') 但是当我将数据写回文件时,这个字段被翻译为’Priv???’. 有人可以让我知道在Spark中使用混合编码来读/写文件的正确方法. 解决方法
调用textFile时,可以将use_unicode设置为False.它将为您提供str对象(Python 2.x)或字节对象(Python 3.x)的RDD,可以使用所需的编码进一步处理,例如
sc.textFile(path,use_unicode=False).map(lambda x: x.decode("iso-8859-1")) 如果没有足够的数据可以使用binaryFiles按原样加载 sc.binaryFiles(path).values().flatMap(lambda x: x.decode("iso-8859-1").splitlines()) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |