Я уже много исследовал, но не смог найти решение. Ближайший вопрос, который я смог найти здесь: Почему мой SPARK работает очень медленно с mongoDB< /а>.
Я пытаюсь загрузить коллекцию mongodb в DataFrame искры, используя соединитель mongo-hadoop. Вот фрагмент соответствующего кода:
connection_string = 'mongodb://%s:%s/randdb.%s'%(dbhost, dbport, collection_name)
trainrdd = sc.mongoRDD(connection_string, config=config)
# traindf = sqlcontext.createDataFrame(trainrdd)
# traindf = sqlcontext.read.json(trainrdd)
traindf = sqlcontext.jsonRDD(trainrdd)
Здесь «sc» — это объект SparkContext. Я также пробовал варианты, которые закомментированы в коде. Но все одинаково медленные. Для коллекции размером 2 ГБ (100 000 строк и 1000 столбцов) требуется около 6 часов (святой моли:/) на кластере из 3 машин, каждая с 12 ядрами и 72 ГБ ОЗУ (используя все ядра в этом искровом кластере). Сервер MongoDB также работает на одной из этих машин.
Я не уверен, правильно ли я это делаю. Любые указатели на то, как оптимизировать этот код, были бы очень полезны.
jsonRDD
? Можете ли вы попробовать преобразовать RDD в DataFrame другими способами? - person Wan Bachtiar   schedule 04.05.2016