无法在 Databricks 中使用 pyspark 读取 json 文件

Posted

技术标签:

【中文标题】无法在 Databricks 中使用 pyspark 读取 json 文件【英文标题】:Unable to read json file with pyspark in Databricks 【发布时间】:2019-12-24 16:51:37 【问题描述】:

我正在使用 pyspark 从 JSON 文件创建 dataframe

JSON文件的结构如下:

[
  
    "Volcano Name": "Abu",
    "Country": "Japan",
    "Region": "Honshu-Japan",
    "Location": 
      "type": "Point",
      "coordinates": [
        131.6,
        34.5
      ]
    ,
    "Elevation": 571,
    "Type": "Shield volcano",
    "Status": "Holocene",
    "Last Known Eruption": "Unknown",
    "id": "4cb67ab0-ba1a-0e8a-8dfc-d48472fd5766"
  ,
  
    "Volcano Name": "Acamarachi",
    "Country": "Chile",
    "Region": "Chile-N",
    "Location": 
      "type": "Point",
      "coordinates": [
        -67.62,
        -23.3
]

我将使用以下代码行读取文件:

myjson = spark.read.json("/FileStore/tables/sample.json")

但是,我不断收到以下错误消息:

激发工作 myjson:pyspark.sql.dataframe.DataFrame _corrupt_record:字符串

谁能告诉我我可能做错了什么?

是json文件结构有问题吗?

【问题讨论】:

【参考方案1】:

好像你的 JSON 是多行 Json,为什么问题出在下面,要解决这个问题是代码 sn-p,

myjson = spark.read.option("multiline", "true").option("mode", "PERMISSIVE")
         .json("/FileStore/tables/sample.json")

希望这能解决问题。

【讨论】:

阿杰,感谢您与我们联系。我添加了您的命令,它似乎可以工作,但是我现在遇到了重复列的问题。得到错误:Found duplicate column(s) in the data schema: `country`; 有没有办法让即使有重复的列也能创建数据框?如果没有,你知道删除重复列的代码 只是想指出没有任何重复的列。所以我不知道为什么它说Found duplicate column(s) in the data schema: `country`; 是的,您的数据中没有重复的列,不知道为什么会这样说 完整的 json 文件可以在这里找到github.com/Azure-Samples/azure-cosmos-db-sample-data/blob/… 让我们continue this discussion in chat。

以上是关于无法在 Databricks 中使用 pyspark 读取 json 文件的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Databricks 中使用 pyspark 读取 json 文件

无法在 Databricks 中使用 Pandas UDF

无法在 databricks 运行时版本 7 中使用 shell 命令访问 /dbfs/FileStore

无法在 azure databricks 中使用 spark 读取 csv 文件

无法使用 pySpark 从 Databricks 在 Cosmos DB/documentDB 中写入数据帧

无法使用 Databricks 列出 Azure Storage Gen 2 文件