Как получить доступ к данным в столбце набора данных Spark

#api #apache-spark #split #apache-spark-sql #col

#API #apache-spark #разделение #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). Но у type Column в spark нет такого метода, поэтому я думаю, как получить ‘string’ внутри столбца, чтобы я мог выполнить split операцию.

Кто-нибудь знает, что мне следует делать?

Ответ №1:

Используйте метод functions.split

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

Ответ №2:

Для фрейма данных 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       |
 ---- --- --------