[SCALA] 어떻게 반복 가능 객체의 스칼라의 목록에서 DataFrame를 만드는 방법?
SCALA어떻게 반복 가능 객체의 스칼라의 목록에서 DataFrame를 만드는 방법?
나는 다음과 같은 스칼라 값이 :
val values: List[Iterable[Any]] = Traces().evaluate(features).toList
그리고 나는 DataFrame로 변환 할 수 있습니다.
나는 다음을 시도 할 때 :
sqlContext.createDataFrame(values)
나는이 오류가 발생했습니다 :
error: overloaded method value createDataFrame with alternatives:
[A <: Product](data: Seq[A])(implicit evidence$2: reflect.runtime.universe.TypeTag[A])org.apache.spark.sql.DataFrame
[A <: Product](rdd: org.apache.spark.rdd.RDD[A])(implicit evidence$1: reflect.runtime.universe.TypeTag[A])org.apache.spark.sql.DataFrame
cannot be applied to (List[Iterable[Any]])
sqlContext.createDataFrame(values)
왜?
해결법
-
==============================
1.implicits 객체가 무엇인지 불꽃 이잖아. 그것은 당신이 DataFrame / 데이터 집합 / RDD로 일반적인 스칼라 모음 형식을 변환 할 수 있습니다. 여기에 스파크 2.0 예입니다하지만 너무 이전 버전에 존재
implicits 객체가 무엇인지 불꽃 이잖아. 그것은 당신이 DataFrame / 데이터 집합 / RDD로 일반적인 스칼라 모음 형식을 변환 할 수 있습니다. 여기에 스파크 2.0 예입니다하지만 너무 이전 버전에 존재
import org.apache.spark.sql.SparkSession val values = List(1,2,3,4,5) val spark = SparkSession.builder().master("local").getOrCreate() import spark.implicits._ val df = values.toDF()
편집 : 그냥 당신이 2D 목록 뒤에 깨달았다. 여기에 내가 스파크 쉘에 노력 무언가이다. 나는 튜플의 목록에 2D 목록을 변환 DataFrame에 암시 적 변환을 사용 :
val values = List(List("1", "One") ,List("2", "Two") ,List("3", "Three"),List("4","4")).map(x =>(x(0), x(1))) import spark.implicits._ val df = values.toDF
EDIT2 : MTT에 의해 원래의 질문이 정답 인에 대한 2 차원 목록의 스칼라 목록에서 스파크 dataframe을 만드는 방법이었다. 원래 질문은 https://stackoverflow.com/revisions/38063195/1입니다 문제는 나중에 허용 대답과 일치하도록 변경되었습니다. 다른 사람이 원래의 질문과 비슷한 뭔가를 찾고있는 경우를 찾을 수 있도록이 편집 추가.
-
==============================
2.언급 zero323, 우리는 먼저 변환 목록 [의 Iterable [모든] 목록 [행]에 다음 RDD 행을 넣어 스파크 데이터 프레임에 대한 스키마를 준비해야합니다.
언급 zero323, 우리는 먼저 변환 목록 [의 Iterable [모든] 목록 [행]에 다음 RDD 행을 넣어 스파크 데이터 프레임에 대한 스키마를 준비해야합니다.
목록 [의 Iterable [모든] 목록 [행]로 변환하려면, 우리는 말할 수있다
val rows = values.map{x => Row(x:_*)}
다음 스키마와 같은 가진 스키마, 우리는 RDD을 만들 수 있습니다
val rdd = sparkContext.makeRDD[RDD](rows)
그리고 마지막으로 스파크 dataframe를 만들
val df = sqlContext.createDataFrame(rdd, schema)
-
==============================
3.간단한 방법 :
간단한 방법 :
val newList = yourList.map(Tuple1(_)) val df = spark.createDataFrame(newList).toDF("stuff")
-
==============================
4.스파크 2에서 우리는 단지 토즈 API에 의해 DS에 목록을 변환하여 데이터 집합을 사용할 수 있습니다
스파크 2에서 우리는 단지 토즈 API에 의해 DS에 목록을 변환하여 데이터 집합을 사용할 수 있습니다
val ds = list.flatMap(_.split(",")).toDS() // Records split by comma
또는
val ds = list.toDS()
RDD 또는 DF 이상이보다 편리
-
==============================
5.가장 간결한 방법의 I의 한 발견 :
가장 간결한 방법의 I의 한 발견 :
val df = spark.createDataFrame(List("A", "B", "C").map(Tuple1(_)))
from https://stackoverflow.com/questions/38063195/how-to-create-dataframe-from-scalas-list-of-iterables by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 왜 contravariant 위치 매개 변수는 무엇입니까? (0) | 2019.11.11 |
---|---|
[SCALA] 어떻게 튜플에 함수를 적용? (0) | 2019.11.11 |
[SCALA] 스칼라에서 "보기"기능은 무엇입니까? (0) | 2019.11.11 |
[SCALA] SBT 정지 종료하지 않고 실행 (0) | 2019.11.11 |
[SCALA] 스칼라에서 memoize하는 일반적인 방법이 있나요? (0) | 2019.11.11 |