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

时间:2018-04-10 19:55:32

标签: python json apache-spark pyspark databricks

试图想出一种方法将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)

无效

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我认为你的json实际上并不包含重复的密钥。如果这样做可能是您的解决方案无法正常工作的原因。

否则,以下snipplet将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

Python 3.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

答案 1 :(得分:0)

最简单的答案是您忘记了代码中的.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'}