2015-05-04 6 views
0

Я пытаюсь понять, как работать с Spark-GraphX, но всегда есть некоторые проблемы, поэтому, возможно, кто-нибудь может посоветовать мне, что читать и т. Д. Я попытался прочитать документацию по испарению и Learning Spark - O'Reilly Media, но не смог найти никакого объяснения, сколько памяти нам нужно для работы с сетями разного размера и т. Д.Apache Spark GraphX ​​java.lang.ArrayIndexOutOfBoundsException

Для моих тестов я использую несколько примеров наборов данных. Я запускать их на 1 главном узле (~ 16Gb RAM) от искрового оболочки:

./bin/spark-shell --master spark://192.168.0.12:7077 --executor-memory 2900m --driver-memory 10g 

и 3-5 рабочих (1 работника на 1 отдельный аппарат, который имеет 4 Гб оперативной памяти):

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://192.168.0.12:7077 

Тогда от искрового Shell Я бегу мои скрипты (Scala не компилируется):

:load /home/ubuntu/spark-1.2.1/bin/script.scala 

Я не использовать HDFS еще, просто скопировал файлы набора данных для каждой машины (с теми же именами путей, конечно). В небольших сетях, таких как Закари клуб или даже большие ~ 256 Мб сети (после увеличения драйвера-памяти параметра) Я могу рассчитывать треугольники, клинья и т.д.

Теперь попробует разобраться с 750 + Мб сетей и есть ошибки , Например, у меня есть набор данных ссылок Википедии в формате 2 столбца (link_from link_to), 750 Мб. Попробуйте загрузить его:

val graph = GraphLoader.edgeListFile(sc, "graphx/data/dbpidia") 

И получите ошибку:

[Stage 0:==============================================>  (22 + 1)/23] 
15/04/30 22:52:46 WARN TaskSetManager: Lost task 22.0 in stage 0.0 (TID 22, host-192-168-0-18.openstacklocal): java.lang.ArrayIndexOutOfBoundsException: 1 
at org.apache.spark.graphx.GraphLoader$$anonfun$1$$anonfun$apply$1.apply(GraphLoader.scala:83) 
at org.apache.spark.graphx.GraphLoader$$anonfun$1$$anonfun$apply$1.apply(GraphLoader.scala:76) 
at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) 
at org.apache.spark.graphx.GraphLoader$$anonfun$1.apply(GraphLoader.scala:76) 
at org.apache.spark.graphx.GraphLoader$$anonfun$1.apply(GraphLoader.scala:74) 
at org.apache.spark.rdd.RDD$$anonfun$15.apply(RDD.scala:631) 
at org.apache.spark.rdd.RDD$$anonfun$15.apply(RDD.scala:631) 
at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35) 
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:280) 
at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:61) 
at org.apache.spark.rdd.RDD.iterator(RDD.scala:245) 
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61) 
at org.apache.spark.scheduler.Task.run(Task.scala:56) 
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
15/04/30 22:52:47 WARN TaskSetManager: Lost task 22.2 in stage 0.0 (TID 24, host-192-168-0-18.openstacklocal): java.lang.ArrayIndexOutOfBoundsException 

На самом деле мне нужно работать с наборами данных размером >> 1Tb, но получаю ошибки даже на меньший. Что я делаю не так? Каковы пределы памяти? Какую стратегию вы можете предложить для >> 1Tb-файлов, как их лучше хранить? Спасибо.

+1

Доступен ли этот набор данных? Похоже, в данных может быть неправильная ссылка вершин. Вы пробовали загружать файл в RDD [(String, String)], а затем разбирали его по краям? – BradRees

ответ

0

Это может быть ошибка в Graphx

https://issues.apache.org/jira/browse/SPARK-5480

У меня такая же проблема, как ваша. Он отлично работает на небольшом наборе данных. Когда размер данных становится больше, искровые выбросы ArrayIndexOutOfBoundsException ошибка

Смежные вопросы