Как да преразпределите CassandraRDD в Apache Spark

Използвам клъстер Three Node Cassandra с Six Spark Workers, всеки има 1 Core и 2GB RAM. Използвайки приложението Spark, се опитвам да извлека цели данни от Cassandra Table, която има повече от 300 000 реда, и се опитвам да направя някакво агрегиране.

Но извличането на данни от Касандра отнема много време. Преминах също през потребителския интерфейс на Spark, видях, че етапът на Spark има 3 дяла, в които два се изпълняват много бързо (в рамките на секунди), но третият отнема много време (7 минути).

И също така се опитах да разделя CassandraRDD, за да увелича броя на задачите и да разпределя задачите на всичките шест работници, но не открих никакво решение.


person Kaushal    schedule 03.04.2015    source източник


Отговори (1)


За да коригирате броя на задачите, създадени от CassandraRDD, трябва да коригирате spark.cassandra.input.split.size. Това определя колко действителни Spark дялове ще бъдат направени.

spark.cassandra.input.split.size    approx number of Cassandra partitions in a Spark partition  100000

Обърнете внимание, че това контролира броя на C* дяловете, а не C* редовете в spark дял. Това също е приблизителна оценка, така че не можете да бъдете гарантирани, че този точен брой токени ще бъде в дял на искра.

Ако продължавате да виждате някои дялове да работят по-бавно от други, бих проучил изправността на възела за този дял и ще проверя за горещи точки.

person RussS    schedule 03.04.2015
comment
Зададох това --conf spark.cassandra.input.split.size_in_mb=32, но всичките ми данни от около 250 mb се зареждат в един изпълнител (~4 милиона записа) - person Nipun; 25.09.2015
comment
моля, вижте това stackoverflow .com/questions/32775696/ - person Nipun; 25.09.2015