试图想出一种方法将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)
无效
感谢您的帮助
答案 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'}