簡體   English   中英

從 Pyspark 中嵌套的 Json-String 列中提取架構

[英]Extract Schema from nested Json-String column in Pyspark

假設我有下表:

身體
{"Day":1,"vals":[{"id":"1", "val":"3"}], {"id":"2", "val":"4"}}

我的目標是在 Pyspark 中為這個嵌套的 json 列寫下架構。 我嘗試了以下兩件事:

schema = StructType([
  StructField("Day", StringType()),
  StructField(
  "vals",
  StructType([
    StructType([
      StructField("id", StringType(), True),
      StructField("val", DoubleType(), True)
    ])
    StructType([
      StructField("id", StringType(), True),
      StructField("val", DoubleType(), True)
    ])
  ])
  )
])

在這里我得到的錯誤是

'StructType' object has no attribute 'name'

另一種方法是將嵌套數組聲明為 ArrayType:

schema = StructType([
  StructField("Day", StringType()),
  StructField(
  "vals",
  ArrayType(
    ArrayType(
        StructField("id", StringType(), True),
        StructField("val", DoubleType(), True)
      , True)
    ArrayType(
        StructField("id", StringType(), True),
        StructField("val", DoubleType(), True)
      , True)
    , True)
  )
])

在這里,我收到以下錯誤:

takes from 2 to 3 positional arguments but 5 were given

這可能來自僅將 Sql 類型作為參數的數組。

誰能告訴我他們創建模式的方法是什么,因為我是整個主題的超級新手..

您的第二個嵌套 StructType 需要一個名稱:

schema = StructType([StructField("Day", DoubleType()), 
                 StructField("vals", StructType([StructField("id",StringType()), StructField("val", DoubleType())])),
                 StructField("vals2", StructType([StructField("id",StringType()), StructField("val", DoubleType())]))
                ])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM