数据帧中的struct和array在pyspark中将数据类型显示为字符串

时间:2019-01-16 09:55:43

标签: json apache-spark pyspark pyspark-sql apache-spark-dataset

我有如下所述的Json文件,该文件具有用于单个Json元素的数组和结构,因此在使用pyspark dataframe读取此json文件后,将数据类型作为“ String”而不是Array / Struct。您能帮我解决这个问题吗? 我已经将上面的json转换为dataframe(df),然后尝试使用以下代码读取其类型

commentdtype = df.select("nodesList.node.commentsList.comments").dtypes[0][1]

print(commentdtype) # --> this is returning string instead of array/struct

if str(commentdtype).startswith('array<'):
    commentdf = df.select(explode("nodesList.node.commentsList.comments").alias("comments"))
else:
    commentdf = df.select(F.col("nodesList.node.commentsList.comments").alias("comments"))

当我们运行上面的代码时,返回“字符串”,但实际上数据帧同时具有数组和结构。你们能帮我解决这个问题吗?

Input Json

{
  "nodesList":{
    "node":[
      {
        "Id":23,
        "commentsList":{
          "comments":{
            "commentsType":"abc",
            "commentsText":"Hi"
          }
        },
        {
          "Id":24,
          "commentsList":{
            "comments":[
              {
                "commentsType":"def",
                "commentsText":"hello"
              },
              {
                "commentsType":"ghi",
                "commentsText":"good"
              }
            ]
          }
        }
      }
    ]
  }
}

0 个答案:

没有答案