首页 > 解决方案 > 具有多种数据类型的 Pyspark SQL 数据帧映射

问题描述

我在胶水中有一个 pyspark 代码,我想创建一个带有映射结构的数据框,它是整数和字符串的组合。

样本数据:

{ "Candidates": [
    {
      "jobLevel": 6,
      "name": "Steven",
    },    {
      "jobLevel": 5,
      "name": "Abby",
    } ] }

因此,我尝试使用下面的代码来创建地图数据类型。但是每次整数数据类型 jobLevel 被转换为字符串数据类型。有什么建议可以通过保留工作级别的数据类型来完成这项工作吗?

使用的代码:

df = spark.sql("select Supervisor_name, 
           map('job_level', INT(job_level_name), 
          'name', employeeLogin) as Candidates 
     from dataset_1")

标签: dataframepysparkapache-spark-sqlaws-glueaws-glue-spark

解决方案


地图值不可能有不同的类型。在这种情况下使用结构。

df = spark.sql("""
    select Supervisor_name, 
           struct(INT(job_level_name) as job_level, 
                  employeeLogin as name
                 ) as Candidates 
    from dataset_1
""")

推荐阅读