저는 split이 필요한 열이있는 scala를 사용하여 Spark에서 데이터 프레임을 가지고 있습니다.spark scala에서 1 열을 3 열로 나누십시오.
+--------------+
|col1|col2|col3|
| a| b| c|
| d| e| f|
+--------------+
을 나는 불꽃에게 2.0.0
감사
저는 split이 필요한 열이있는 scala를 사용하여 Spark에서 데이터 프레임을 가지고 있습니다.spark scala에서 1 열을 3 열로 나누십시오.
+--------------+
|col1|col2|col3|
| a| b| c|
| d| e| f|
+--------------+
을 나는 불꽃에게 2.0.0
감사
에 한번 사용하고 있습니다 :
df.withColumn("_tmp", split($"columnToSplit", "\\.")).select(
$"_tmp".getItem(0).as("col1"),
$"_tmp".getItem(1).as("col2"),
$"_tmp".getItem(2).as("col3")
).drop("_tmp")
scala> test.show
+-------------+
|columnToSplit|
+-------------+
| a.b.c|
| d.e.f|
+-------------+
나는 다음과 같이 밖으로 분할이 열을 필요로
sele을 피하는 용액 CT 부분.
case class Message(others: String, text: String)
val r1 = Message("foo1", "a.b.c")
val r2 = Message("foo2", "d.e.f")
val records = Seq(r1, r2)
val df = spark.createDataFrame(records)
df.withColumn("col1", split(col("text"), "\\.").getItem(0))
.withColumn("col2", split(col("text"), "\\.").getItem(1))
.withColumn("col3", split(col("text"), "\\.").getItem(2))
.show(false)
+------+-----+----+----+----+
|others|text |col1|col2|col3|
+------+-----+----+----+----+
|foo1 |a.b.c|a |b |c |
|foo2 |d.e.f|d |e |f |
+------+-----+----+----+----+
프로그래밍이 작업을 수행하려면 당신이 (0 until 3).map(i => col("temp").getItem(i).as(s"col$i"))
과 표현의 시퀀스를 생성 (당신이 결과로 3 열을 필요로 가정) 다음으로 select
에 적용 할 수 있습니다 : 당신은 단지 새 열을 추가 할 때 유용합니다 : _*
구문 :
df.withColumn("temp", split(col("columnToSplit"), "\\.")).select(
(0 until 3).map(i => col("temp").getItem(i).as(s"col$i")): _*
).show
+----+----+----+
|col0|col1|col2|
+----+----+----+
| a| b| c|
| d| e| f|
+----+----+----+
모든 열을 유지하려면 :
df.withColumn("temp", split(col("columnToSplit"), "\\.")).select(
col("*") +: (0 until 3).map(i => col("temp").getItem(i).as(s"col$i")): _*
).show
+-------------+---------+----+----+----+
|columnToSplit| temp|col0|col1|col2|
+-------------+---------+----+----+----+
| a.b.c|[a, b, c]| a| b| c|
| d.e.f|[d, e, f]| d| e| f|
+-------------+---------+----+----+----+
위대한 작품, 고마워! –
분할에 필요한 가져 오기는 무엇입니까? – Jake
@Jake import org.apache.spark.sql.functions.split 이것을 사용하십시오 –