2017-01-15 3 views
0

내가DataFrame에서 float 숫자가있는 SQL 백분율 Spark 1.6 - 가능한 모든 해결책?

sqlContext.sql("SELECT percentile(x, 0.5) FROM df") 

까지 내가 가지고 오류에서 이해되는 부동 소수점 숫자 데이터 프레임에 백분위 0.25, 0.75을 계산하는 방법을 찾으려고, 백분위는 정수

AnalysisException: u'No handler for Hive udf class org.apache.hadoop.hive.ql.udf.UDAFPercentile because: No matching method for class org.apache.hadoop.hive.ql.udf.UDAFPercentile with (float, double). Possible choices: _FUNC_(bigint, array<double>) _FUNC_(bigint, double) .; line 1 pos 43' 
지원

가 아니면 캐스팅

sqlContext.sql("SELECT percentile_approx(x, 0.5) FROM df") 

또는 사용을 사용할 필요가

cast(x as bigint) 

둘 다 같은 결과를주지 못합니다. 왜냐하면 동일한 플로트 값에서 팬더에 의한 백분위 수를 계산하면됩니다.

플로트 수에서 Spark 1.6의 백분위 수를 어떻게 얻을 수 있습니까?

큰 숫자 (instans 10000000)의 열을 곱하고 정수로 계산하는 한 가지 해결 방법은 다음과 같습니다.

가능한 해결책이나 해결 방법은 무엇입니까?

감사합니다.

답변

0

지원되지 않는 경우 SQL을 통해 수행하는 것이 분명히 rdd에서 수행하는 것보다 더 많은 시간이 필요할 수있는 해결 방법입니다. 당신이 쉽게 할 수 있다면 DataFrame을 고수하는 것은 괜찮지 만 RDD로 쉽게 할 수있는 일을하도록 강요하는 용도는 없습니다.

RDD에서 백분위 수를 계산하려면 다음을 참조하십시오. How to compute percentiles in Apache Spark

관련 문제