如何访问Spark数据集列中的数据

时间:2019-03-23 04:49:05

标签: api apache-spark split apache-spark-sql col

我有一个这样的数据框:

+------+---+
|  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

类型

我想用类似Name的方法转换split("-")列,以仅获取它的第一部分(即A,B,C)。 但是在spark中键入Column并没有这种方法,所以我在考虑如何在Column中获取'string'以便执行split操作。

有人知道我应该怎么做吗?

2 个答案:

答案 0 :(得分:1)

使用functions.split方法

df.select(split(col("Name"), "-").getItem(0))

答案 1 :(得分:1)

分割功能可用于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       |
+----+---+--------+