【问题标题】:How to read a JSON file in Azure Databricks from Azure Data Lake Store如何从 Azure Data Lake Store 读取 Azure Databricks 中的 JSON 文件
【发布时间】:2018-08-27 04:08:15
【问题描述】:

我正在使用 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 对象并遍历键及其值。

【问题讨论】:

    标签: python json azure databricks


    【解决方案1】:

    诀窍是对文件 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)
    

    也许更容易?但这暂时有效。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多