在 databricks spark 中加载一个 json 文件,然后遍历 json 列表

load a json file in databricks spark then iterate through the json list

试图找出一种将 json 文件加载到 databricks spark 中的方法,将 json 放入字典中,然后遍历它。

现在我正在尝试使用 sc.textFile() 加载文件。

我的 json 文件如下所示:

{
    "tablename": "a",
    "tablename": "b",
    "tablename": "c",
       ...........
    "tablename": "z",
}

我想遍历 json 文件

我尝试过的事情:

data = json.load(open('data.json'))

没用

with open('data.json') as data_file:    
    data = json.load(data_file)

没用

感谢您的帮助

我假设您的 json 实际上不包含重复键。如果是这样,这可能是您的解决方案不起作用的原因。

否则以下代码片段将 json 文件读入字典并在 Python 2.7:

中遍历它
#! /usr/bin/python
# -*- coding: utf-8 -*-

import json

with open('stuff.json', 'r') as file_handler:
    result = json.load(file_handler)

print(result)  # {u'tablename1': u'b', u'tablename0': u'a', ...}
print(type(result))  # <type 'dict'>

for key, value in result.iteritems():
    print('key: %s // value: %s' % (key, value))  # key: tablename1 // value: b

Python3.6的代码略有不同:

#! /usr/bin/python3
# -*- coding: utf-8 -*-

import json

with open('stuff.json', 'r') as file_handler:
    result = json.load(file_handler)

print(result)  # {u'tablename1': u'b', u'tablename0': u'a', ...}
print(type(result))  # <class 'dict'>

for key, value in result.items():
    print('key: %s // value: %s' % (key, value))  # key: tablename1 // value: b

最简单的答案是您忘记了代码中的 .read() 方法

使用带有信息的文件

{
    "tablename1": "a",
    "tablename2": "b",
    "tablename3": "c",
    "tablename4": "z"
}

和代码

json.loads(open('foo.json'))

给出结果

{u'tablename1': u'a',
 u'tablename2': u'b',
 u'tablename3': u'c',
 u'tablename4': u'z'}