Dataframe 具有多种数据类型的Pyspark SQL数据帧映射
我在glue中有一个pyspark代码,我想创建一个映射结构为整数和字符串组合的数据帧 样本数据:Dataframe 具有多种数据类型的Pyspark SQL数据帧映射,dataframe,pyspark,apache-spark-sql,aws-glue,aws-glue-spark,Dataframe,Pyspark,Apache Spark Sql,Aws Glue,Aws Glue Spark,我在glue中有一个pyspark代码,我想创建一个映射结构为整数和字符串组合的数据帧 样本数据: { "Candidates": [ { "jobLevel": 6, "name": "Steven", }, { "jobLevel": 5, "name": "Abby", }
{ "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")
我是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)
映射值不可能有不同的类型。在这种情况下使用结构
df = spark.sql("""
select Supervisor_name,
struct(INT(job_level_name) as job_level,
employeeLogin as name
) as Candidates
from dataset_1
""")