如何访问 Spark 数据集列中的数据
How to access data in a Spark Dataset Column
我有一个这样的数据框:
+------+---+
| Name|Age|
+------+---+
|A-2 | 26|
|B-1 | 30|
|C-3 | 20|
+------+---+
scala> p.select("Name", "Age")
res2: org.apache.spark.sql.DataFrame = [Name: string, Age: string]
这里我们可以清楚的看到,列中的数据是String
类型的
我想用类似 split("-")
的方法转换 Name
列,以仅获取它的第一部分(即 A、B、C)。
但是在 spark 中键入 Column
没有这样的方法,所以我在考虑如何在 Column 中获取 'string' 以便我可以执行 split
操作。
有谁知道我该怎么办?
使用functions.split方法
df.select(split(col("Name"), "-").getItem(0))
spark 数据帧可用的拆分功能。请参阅下面的示例。
//Creating Test Data
val df = Seq(("A-2", 26)
, ("B-1", 30)
, ("C-3", 20)
).toDF("name", "age")
df.withColumn("new_name", split(col("name"),"-")(0)).show(false)
+----+---+--------+
|name|age|new_name|
+----+---+--------+
|A-2 |26 |A |
|B-1 |30 |B |
|C-3 |20 |C |
+----+---+--------+
我有一个这样的数据框:
+------+---+
| Name|Age|
+------+---+
|A-2 | 26|
|B-1 | 30|
|C-3 | 20|
+------+---+
scala> p.select("Name", "Age")
res2: org.apache.spark.sql.DataFrame = [Name: string, Age: string]
这里我们可以清楚的看到,列中的数据是String
我想用类似 split("-")
的方法转换 Name
列,以仅获取它的第一部分(即 A、B、C)。
但是在 spark 中键入 Column
没有这样的方法,所以我在考虑如何在 Column 中获取 'string' 以便我可以执行 split
操作。
有谁知道我该怎么办?
使用functions.split方法
df.select(split(col("Name"), "-").getItem(0))
spark 数据帧可用的拆分功能。请参阅下面的示例。
//Creating Test Data
val df = Seq(("A-2", 26)
, ("B-1", 30)
, ("C-3", 20)
).toDF("name", "age")
df.withColumn("new_name", split(col("name"),"-")(0)).show(false)
+----+---+--------+
|name|age|new_name|
+----+---+--------+
|A-2 |26 |A |
|B-1 |30 |B |
|C-3 |20 |C |
+----+---+--------+