【问题标题】:Pyspark SQL dataframe map with multiple data types具有多种数据类型的 Pyspark SQL 数据帧映射
【发布时间】:2021-07-09 00:27:57
【问题描述】:

我在胶水中有一个 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")

【问题讨论】:

    标签: dataframe pyspark apache-spark-sql aws-glue aws-glue-spark


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我是 pyspark 的新手 :-)。但是,让我们尝试并行化,然后根据需要定义模式;

      js={ "Candidates": [
          {
            "jobLevel": 6,
            "name": "Steven",
          },    {
            "jobLevel": 5,
            "name": "Abby",
          } ] }
      
      
      
          from pyspark.sql.types import *
          df=sc.parallelize(js["Candidates"])
          schema = StructType([StructField('name', StringType(), True),
                               StructField('jobLevel', IntegerType(), True)])
          df1=spark.read.json(df, schema)
          df1.show(truncate=False)
          df1.printSchema()
      

      我明白了:

      +------+--------+
      |name  |jobLevel|
      +------+--------+
      |Steven|6       |
      |Abby  |5       |
      +------+--------+
      
      root
       |-- name: string (nullable = true)
       |-- jobLevel: integer (nullable = true)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-30
        • 1970-01-01
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 2015-08-06
        相关资源
        最近更新 更多