使用ijson迭代解析JSON文件

时间:2018-11-02 21:08:31

标签: python json bigdata ijson

我想分块解析一个巨大的json文件。我想使用它的块而不加载整个东西。 数据可以在这里找到 http://jmcauley.ucsd.edu/data/amazon/

当我使用ijson进行操作时,出现错误JSONError: Additional data。 有什么办法吗?

我的代码:##产生其他数据错误

file = open('Books_5.json',"r") ##Books_5.json is the 5-core small dataset
objects = ijson.items(file, 'meta.data.item')
reviews = (o for o in objects if o['type']=='reviewText')
for review in reviews : print(review)

这确实有效,但是非常慢:

path='Books_5.json'
def parse(path):
  g = open(path, 'rb')
  for l in g:
    yield eval(l)
def getDF(path):
  i = 0
  df = {}
  for d in parse(path):
    df[i] = d
    i += 1
  return pd.DataFrame.from_dict(df, orient='index')

df = getDF(path)
df.info()

result of the code

1 个答案:

答案 0 :(得分:0)

听起来JSON数据中包含多个顶级对象,但JSON标准不支持。但是,在使用/Users/hoomacbuk/.rvm/rubies/ruby-2.3.8/lib/ruby/2.3.0/digest.rb:16:in `const_missing': library not found for class Digest::SHA1 -- digest/sha1 (LoadError) 选项(例如multiple_values=True)时,ijson仍支持此功能。