AWS Glue - pySpark: spliting a string column into a new integer array column
我正在尝试使用 Glue 和 pySpark 在 AWS 上执行 ETL 作业,但不幸的是,我对此非常陌生。
在大多数情况下,使用胶水动态数据框执行应用映射和我必须执行的其他一些转换,我没有任何问题。但是我遇到了一个特定列的问题,我必须将其从字符串转换为整数数组。在这一列
如何在 AWS Glue 和使用 pySpark 中实现这一点?非常感谢任何帮助。
使用
-
(或)通过使用
transform (From Spark-2.4) 函数并将数组元素转换为 int。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | df=spark.createDataFrame([('111 222 333 444 555 666',)],["value"]) df.printSchema() #root # |-- value: string (nullable = true) #using split and cast as array<int> df.withColumn("array_int",split(col("value"),"\\\\s+").cast("array<int>")).\\ show(10,False) #using transform function df.withColumn("array_int",expr("""transform(split(value,"\\\\\\s+"), x -> int(x))""")).\\ show(10,False) #+-----------------------+------------------------------+ #|value |array_int | #+-----------------------+------------------------------+ #|111 222 333 444 555 666|[111, 222, 333, 444, 555, 666]| #+-----------------------+------------------------------+ df.withColumn("array_int",split(col("value"),"\\\\s+").cast("array<int>")).printSchema() df.withColumn("array_int",expr("""transform(split(value,"\\\\\\s+"), x -> int(x))""")).printSchema() #root # |-- value: string (nullable = true) # |-- array_int: array (nullable = true) # | |-- element: integer (containsNull = true) |