[英]Count the number of sql dataframe in spark by map function in pyspark
[英]Pyspark SQL dataframe map with multiple data types
我在胶水中有一个 pyspark 代码,我想创建一个 dataframe 和 map 结构,作为 integer 和字符串的组合。
样本数据:
{ "Candidates": [
{
"jobLevel": 6,
"name": "Steven",
}, {
"jobLevel": 5,
"name": "Abby",
} ] }
因此,我尝试使用以下代码创建 map 数据类型。 但是每次 integer 数据类型 jobLevel 都会转换为字符串数据类型。 有什么建议可以通过保留作业级别的数据类型来完成这项工作吗?
使用的代码:
df = spark.sql("select Supervisor_name,
map('job_level', INT(job_level_name),
'name', employeeLogin) as Candidates
from dataset_1")
map 值不可能有不同的类型。 在这种情况下使用结构。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.