我正在使用Azure Data Lake Store存储具有以下JSON的简单JSON文件:
{
"email": "Usersemail@domain.com",
"id": "823956724385"
}
json文件名为myJson1.json
。 Azure Data Lake Store已成功安装到Azure Databricks。
我能够通过
成功加载JSON文件df = spark.read.option("multiline", "true").json(fi.path)
fi.path
是一个FileInfo
对象,是上方的MyJson1.json
文件。
当我这样做
spark.read.option("multiline", "true").json(fi.path)
df.show()`
我将JSON对象正确打印为(DataFrame),
+---------------------+------------+
| email| id|
+---------------------+------------+
|Usersemail@domain.com|823956724385|
+---------------------+------------+
我想做的是,用json.load(filename)
加载JSON文件,以便能够在Python中使用JSON对象。
当我这样做
with open('adl://.../myJson1.json', 'r') as file:
jsonObject0 = json.load(file)
然后我得到以下错误
[Errno 2]没有这样的文件或目录'adl://.../myJson1.json'
当我尝试时(挂载点正确,我可以列出文件,也可以将spark.read读入DataFrame)
jsonObject = json.load("/mnt/adls/data/myJson1.json")
然后我得到以下错误
'str'对象没有属性'read'
我不知道该怎么做才能加载JSON。我的目标是读取JSON对象并遍历键及其值。
答案 0 :(得分:3)
诀窍是对文件url使用以下语法
/dbfs/mnt/adls/data/myJson1.json
我必须在网址开头添加/dbfs/...
,并用dbfs:/
替换/dbfs/
。
然后我可以使用
with open('/dbfs/mnt/adls/ingress/marketo/update/leads/leads-json1.json', 'r') as f:
data = f.read()
jsonObject = json.loads(data)
也许更容易吗?但这暂时有效。