[SCALA] 개의 행의 값을 추출하는 스파크
SCALA개의 행의 값을 추출하는 스파크
나는 다음과 같은 dataframe을
val transactions_with_counts = sqlContext.sql(
"""SELECT user_id AS user_id, category_id AS category_id,
COUNT(category_id) FROM transactions GROUP BY user_id, category_id""")
나는 평가 개체에 대한 행을 변환하는 것을 시도하고 있지만, x는 (0) 배열을 반환하기 때문에이 실패
val ratings = transactions_with_counts
.map(x => Rating(x(0).toInt, x(1).toInt, x(2).toInt))
해결법
-
==============================
1.일부 더미 데이터로 시작하자 :
일부 더미 데이터로 시작하자 :
val transactions = Seq((1, 2), (1, 4), (2, 3)).toDF("user_id", "category_id") val transactions_with_counts = transactions .groupBy($"user_id", $"category_id") .count transactions_with_counts.printSchema // root // |-- user_id: integer (nullable = false) // |-- category_id: integer (nullable = false) // |-- count: long (nullable = false)
행 값에 액세스 예상 유형을 유지하는 몇 가지 방법이 있습니다 :
-
==============================
2.다음과 같이 등급을 정의 할 수 있습니다 데이터 세트를 사용하여 :
다음과 같이 등급을 정의 할 수 있습니다 데이터 세트를 사용하여 :
case class Rating(user_id: Int, category_id:Int, count:Long)
평가 클래스는 여기에 대신 zero323 제안으로 '평가'의 열 이름 '수'를 가지고있다. 다음과 같이 따라서 평가 변수는 할당됩니다
val transactions_with_counts = transactions.groupBy($"user_id", $"category_id").count val rating = transactions_with_counts.as[Rating]
당신이 불꽃에 런타임 오류로 실행되지 않습니다이 방법은 당신을 때문에 평가 클래스 열 이름은 런타임에 스파크에 의해 생성 된 '수'열 이름과 동일합니다.
-
==============================
3.Dataframe의 행의 값에 액세스하려면, 당신은 루프와 Dataframe의 rdd.collect을 사용해야합니다.
Dataframe의 행의 값에 액세스하려면, 당신은 루프와 Dataframe의 rdd.collect을 사용해야합니다.
당신의 Dataframe 아래처럼 보이는 것이 좋습니다.
val df = Seq( (1,"James"), (2,"Albert"), (3,"Pete")).toDF("user_id","name")
당신의 Dataframe 위에 rdd.collect 사용합니다. 행 변수는 RDD 행 유형의 Dataframe의 각 행을 포함합니다. 행의 각각의 요소를 얻으려면, 콤마로 분리 각 행의 값을 포함 할 것이다 ( ",")를 사용 row.mkString. 분할 기능 (붙박이 기능)를 사용하면 인덱스와 RDD 행의 각 열 값에 액세스 할 수 있습니다.
for (row <- df.rdd.collect) { var user_id = row.mkString(",").split(",")(0) var category_id = row.mkString(",").split(",")(1) }
위의 코드는 좀 더 큰 dataframe.foreach 루프에 비해 보이지만, 당신은 위의 코드를 사용하여 논리를보다 효율적으로 관리를 받게됩니다.
from https://stackoverflow.com/questions/33007840/spark-extracting-values-from-a-row by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 아파치 스파크의 케이스 클래스 평등 (0) | 2019.10.30 |
---|---|
[SCALA] 스칼라의 연산자 우선 순위 (0) | 2019.10.30 |
[SCALA] 값이 할당보다는 단위로 평가 스칼라 할당에 대한 동기는 무엇입니까? (0) | 2019.10.30 |
[SCALA] 스칼라에서,는 "초기 초기화"무엇인가? (0) | 2019.10.30 |
[SCALA] JVM은 로컬 호스트의 IP 주소를 해결하는 데 시간이 오래 걸립니다 (0) | 2019.10.30 |