내가 아주 간단한 스파크 DataFrame을하고 DataFrame의 GROUPBY을 실행할 때 성능이 끔찍 -내 Spark DataFrame이 RDD보다 속도가 느린 이유는 무엇입니까?
내 캐시 DF 단지 두 개의 열입니다 ... RDD reduceByKey (머리로)보다 약 8 배 느리게 동등한, 단지 50,000 행이 고객 이름 : 나는 다음과 같은 두 가지 미리보기를 실행하면
== Physical Plan ==
InMemoryColumnarTableScan [customer#2454,name#2456], InMemoryRelation [customer#2454,name#2456], true, 10000, StorageLevel(true, true, false, true, 1), Scan ParquetRelation[customer#2454,name#2456] InputPaths: hdfs://nameservice1/tmp/v2_selected_parquet/test_parquet2, None
, 나는 유사한 성능,하지 10S와 85S의 DF 버전에서 실행할 수있는 RDD 버전을 기대 ...
rawtempDF2.rdd.map(lambda x: (x['name'], 1)).reduceByKey(lambda x,y: x+y).collect()
rawtempDF2.groupby('name').count().collect()
내가 빠졌습니다. 여기에 정말 근본적인 뭔가? FWIW, RDD 버전은 54 단계, DF 버전은 227입니다./
편집 : Spark 1.6.1 및 Python 3.4.2를 사용하고 있습니다. Edit2 : 또한 소스 쪽매가 고객/day/name으로 분할되었습니다 - 현재 27 명의 고객, 1 일, c. 45 개의 이름.
두 숫자가 너무 높게 보입니다. 이 코드를 실행하고 시간을 측정하려면 어떻게합니까? – zero323
나는 Jupyter 노트북에서 실행 중이 었으며 SparkUI에서 작업을 실행하고있었습니다. 백 엔드는 Mesos (나보다 나은 사람들이 만들었습니다.)이고 Spark 인스턴스는 24 코어와 99GB RAM을 가지고 있습니다. 나는이 모든 것을 초보자이기 때문에 여전히 시간과 테스트에 최선의 방법을 배우고 있습니다. – RichD