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