Ответ 1
Привет, вы можете попробовать следующее:
Существует проект, который объединяет MongoDB с Spark
https://github.com/Stratio/deep-spark/tree/develop
1) выполните git клон
2) зайдите внутрь глубокой искры, а затем в глубокий родительский
3) mvn install
4) открыть искровую оболочку с этими параметрами:
./spark-shell --jars YOUR_PATH/deep-core-0.7.0-SNAPSHOT.jar, YOUR_PATH/deep-commons-0.7.0-SNAPSHOT.jar, YOUR_PATH/deep-mongodb-0.7.0-SNAPSHOT.jar, YOUR_PATH/монго-Java-драйвер-2.12.4-sources.jar
не забудьте перезаписать "YOUR_PATH" с реальным путем
5) Выполните простой пример в искровой оболочке:
import com.stratio.deep.mongodb.config.MongoDeepJobConfig
import com.stratio.deep.mongodb.extractor.MongoNativeDBObjectExtractor
import com.stratio.deep.core.context.DeepSparkContext
import com.mongodb.DBObject
import org.apache.spark.rdd.RDD
import com.mongodb.QueryBuilder
import com.mongodb.BasicDBObject
val host = "localhost:27017"
val database = "test"
val inputCollection = "input";
val deepContext: DeepSparkContext = new DeepSparkContext(sc)
val inputConfigEntity: MongoDeepJobConfig[DBObject] = new MongoDeepJobConfig[DBObject](classOf[DBObject])
val query: QueryBuilder = QueryBuilder.start();
query.and("number").greaterThan(27).lessThan(30);
inputConfigEntity.host(host).database(database).collection(inputCollection).filterQuery(query).setExtractorImplClass(classOf[MongoNativeDBObjectExtractor])
val inputRDDEntity: RDD[DBObject] = deepContext.createRDD(inputConfigEntity)
Лучше всего, что вы можете использовать объект QueryBuilder для создания своих запросов
Также вы можете передать DBObject следующим образом:
{ "number" : { "$gt" : 27 , "$lt" : 30}}
Если вы хотите выполнить итерацию, вы можете использовать метод yourRDD.collect(). Также вы можете использовать свой RDD.foreach, но вы должны предоставить функцию.
Есть еще один способ добавить банки в искру. Вы можете изменить spark-env.sh и поместить эту строку в конец:
CONFDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
for jar in $(ls $CONFDIR/../lib/*.jar); do
SPARK_CLASSPATH=$SPARK_CLASSPATH:${jar}
done
В папке lib вы помещаете свои библиотеки, и это все.
Отказ от ответственности: в настоящее время я работаю над Stratio