【问题标题】:Extract Json data from a spark dataframe [duplicate]从火花数据框中提取 Json 数据 [重复]
【发布时间】:2019-03-19 22:48:08
【问题描述】:
+------------------------------------------------------------------+
| message                                                          |
+------------------------------------------------------------------+
|{"name":"east-desktop","viewers":447,"emptyCount":0,"version":0.3}|
|{"name":"west-desktop","viewers":111,"emptyCount":0,"version":0.6}|
|{"name":"west-desktop","viewers":115,"emptyCount":0,"version":0.1}|
+------------------------------------------------------------------+

message:string

我有一个在一列中包含 json 数据的数据框,我想将数据提取到单独的列或作为 json 文件中。

我正在使用 pyspark 在 Databricks 笔记本中工作。

数据框

+---------------------------------------------+
| name        | viewers| emptyCount | version |
+---------------------------------------------+
|east-desktop | 447    | 0          | 0.3     |
|west-desktop | 111    | 0          | 0.6     |
|west-desktop | 115    | 0          | 0.1     |
+---------------------------------------------+

或 Json

{
  "name": "east-desktop",
  "viewers":  447,
  "emptyCount": 0,
  "version": 0.3,
}

【问题讨论】:

    标签: python json dataframe pyspark databricks


    【解决方案1】:

    pault 是对的,这几乎是同一个问题,但您可以使用以下示例来实现数据帧输出:

    df_new = spark.createDataFrame([
    (str({"name":"east-desktop","viewers":447,"emptyCount":0,"version":0.3}))
    ],StringType())
    
    schema = StructType(
        [
            StructField('name', StringType(), True),
            StructField('viewers', IntegerType(), True),
            StructField('emptyCount', IntegerType(), True),
            StructField('version', FloatType(), True)
       ]
    )
    df_new.withColumn("data", from_json("value",schema)).select("value", col('data.*')).show(truncate=False)
    

    输出:

    +-------------------------------------------------------------------------+------------+-------+----------+-------+
    |value                                                                    |name        |viewers|emptyCount|version|
    +-------------------------------------------------------------------------+------------+-------+----------+-------+
    |{'emptyCount': 0, 'version': 0.3, 'name': 'east-desktop', 'viewers': 447}|east-desktop|447    |0         |0.3    |
    +-------------------------------------------------------------------------+------------+-------+----------+-------+
    

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2018-06-07
      相关资源
      最近更新 更多