структура и массив во фрейме данных, показывающий тип данных в виде строки в pyspark - PullRequest
0 голосов
/ 16 января 2019

У меня есть файл Json, как упомянуто ниже, в котором есть массив и структура для одного элемента Json, поэтому после чтения этого файла json с использованием фрейма данных pyspark получите тип данных «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"))

Когда мы запускаем приведенный выше код, возвращается «строка», но на самом деле фрейм данных имеет как массив, так и структуру,Не могли бы вы, ребята, помочь мне решить эту проблему.

Ввод Json

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