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")

映射值不可能有不同的类型。对于这种情况,请使用结构。

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

我是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)

最新更新