[SCALA] 어떻게 스파크 dataframe에 목록 / 배열에서 새 열을 추가하는 아파치 불꽃
SCALA어떻게 스파크 dataframe에 목록 / 배열에서 새 열을 추가하는 아파치 불꽃
나는 아파치 스파크 2.0 Dataframe / 데이터 세트의 API를 사용하고 나는 값 목록에서 내 dataframe에 새 열을 추가 할 수 있습니다. 내 목록은 주어진 dataframe 같은 값 같은 번호가 있습니다.
val list = List(4,5,10,7,2)
val df = List("a","b","c","d","e").toDF("row1")
내가 좋아하는 일을하고 싶습니다 :
val appendedDF = df.withColumn("row2",somefunc(list))
df.show()
// +----+------+
// |row1 |row2 |
// +----+------+
// |a |4 |
// |b |5 |
// |c |10 |
// |d |7 |
// |e |2 |
// +----+------+
나는 감사하는 어떤 아이디어를 현실에서 내 dataframe는 더 많은 열이 포함되어 있습니다.
해결법
-
==============================
1.이처럼 할 수 :
이처럼 할 수 :
import org.apache.spark.sql.Row import org.apache.spark.sql.types._ // create rdd from the list val rdd = sc.parallelize(List(4,5,10,7,2)) // rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[31] at parallelize at <console>:28 // zip the data frame with rdd val rdd_new = df.rdd.zip(rdd).map(r => Row.fromSeq(r._1.toSeq ++ Seq(r._2))) // rdd_new: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = MapPartitionsRDD[33] at map at <console>:32 // create a new data frame from the rdd_new with modified schema spark.createDataFrame(rdd_new, df.schema.add("new_col", IntegerType)).show +----+-------+ |row1|new_col| +----+-------+ | a| 4| | b| 5| | c| 10| | d| 7| | e| 2| +----+-------+
-
==============================
2.완성도 추가하십시오 DataFrame이로 시작하는 작은 DataFrame임을 알 수 있듯이 입력 목록 (드라이버 메모리에 존재하는) 같은 크기를 가지고 있다는 사실 - 수집 고려할 수 있도록 () -을 보내고 목록 완봉을, 그리고 DataFrame로 다시 변환하는 것은 필요한 경우 :
완성도 추가하십시오 DataFrame이로 시작하는 작은 DataFrame임을 알 수 있듯이 입력 목록 (드라이버 메모리에 존재하는) 같은 크기를 가지고 있다는 사실 - 수집 고려할 수 있도록 () -을 보내고 목록 완봉을, 그리고 DataFrame로 다시 변환하는 것은 필요한 경우 :
df.collect() .map(_.getAs[String]("row1")) .zip(list).toList .toDF("row1", "row2")
즉 빨리되지 않지만 데이터가 정말 작은 경우는 무시할 수 있습니다 및 코드 (틀림없이) 명확하다.
from https://stackoverflow.com/questions/44395873/apache-spark-how-to-append-new-column-from-list-array-to-spark-dataframe by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 왜이 REPL에서 같은 이름의 변수를 선언 할 수있다? (0) | 2019.11.10 |
---|---|
[SCALA] 스파크 : 트랜스 DataFrame를 집계하지 않고 (0) | 2019.11.10 |
[SCALA] 위 유형 경계에서 작동하지 않는 추상 형식을 무시 케이크 패턴 (0) | 2019.11.10 |
[SCALA] 평균으로 누락 된 값을 교체 - 불꽃 Dataframe을 (0) | 2019.11.10 |
[SCALA] 어떻게 선물 꼬리 재귀를 포함하는 함수를 어떻게해야합니까? (0) | 2019.11.10 |