我是MapReduce和MRjob的新手,我试图读取要在python中使用MRjob处理的csv文件。但是它有大约5列带有JSON字符串(例如{})或JSON字符串数组(例如[{},{}])的列,其中一些是嵌套的。
到目前为止,我的映射器如下所示:
from mrjob.job import MRJob
import csv
from io import StringIO
class MRWordCount(MRJob):
def mapper(self, _, line):
l = StringIO(line)
reader = csv.reader(l) # returns a generator.
for cols in reader:
columns = cols
yield None, columns
我得到了错误-
_csv。错误:字段大于字段限制(131072)
但这似乎是发生的,因为我的代码也将JSON字符串也分成了单独的列(由于内部的逗号)。
如何做到这一点,以便不拆分JSON字符串?也许我正在忽略某些东西?
或者,我还有其他方法可以使用MRjob读取此文件吗?
答案 0 :(得分:1)
您的JSON字符串没有用引号引起来,因此该字段中的每个逗号都会使csv引擎认为它是新列。
看一下here,您正在寻找的是quotechar
,更改数据,以便您的json被特殊字符包围(默认为"
),并相应地调整您的csv阅读器>