您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页Spark MongoDB查询遇到的withPipeline类型

Spark MongoDB查询遇到的withPipeline类型

来源:二三娱乐

这两天在用Spark查询MongoDB数据。之前别人做了一些功能所以代码拿过来修改下直接用。但是发现个问题,源程序只是获得数据做Map操作,而我要做SQL查询。官方文档的示范程序要用rdd.withPipeline(Seq(matchQuery,projection1))实现查询条件的设置。但是我总是报错。

查了下以为文档有问题,或者是版本不兼容。最后看到官方文档Java语言的说明,提示要用singletonList替代Seq。试了下果然可以,但是复杂的查询条件使用singletonList又不方便。也没有scala对于这个接口的用法。

原来我的程序别人是用Java开发然后利用iDEA自动翻译成Scala了,所以使用的是JavaSparkContext,然后基于它load出的RDD类型是JavaMongoRDD,而这个RDD调用withPipeline时就必须用java提供的singletonList接口,不能用Seq。

正确的用法是跟官方scala的示范程序一样,使用SparkContext为参数,通过val rdd = MongoSpark.load(spark.sparkContext)返回正经的MongoRDD。然后就可以跟官方Scala文档一样去开发了。

总结,还是要学会Scala才好,用IDE自动转换的代码风险还是比较高。

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务