我是MapReduce和MRjob的新手,我试图读取一个csv文件,我想在python中使用MRjob进行处理。但是它有大约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读取此文件,使此过程更简单或更干净?
您的JSON字符串没有被引号字符包围,因此该字段中的每个逗号都使csv引擎认为它是一个新列。看看这里,您正在寻找的是quetechar
更改您的数据,以便您的json被一个特殊字符包围(默认为"
)并相应地调整您的csv阅读器