spark sql 处理mongodb 数据库中的数据

         利用saprk 处理mongodb数据库中的数据,从根上来说就是用spark 处理解析json数据,大致分为两步,第一步呢就是利用spark 从mongodb中加载数据到spark中,第二部就是用spark sql中个中查询方法、函数来处理加载过来的数据。

具体代码如下:

 1.从mongodb中加载数据到spark

SparkConf conf = new SparkConf().setAppName("mongo").setMaster("local[3]")
//		        .set("spark.mongodb.input.uri", "mongodb://192.168.4.24/credential.course_credential");
				.set("spark.mongodb.input.uri","mongodb://192.168.4.24/search.docs");
				JavaSparkContext jsc = new JavaSparkContext(conf);
2.对加载过来的数据进行处理,对于加载过来的数据,笔者将数据大概分为Object,array,map 三种类型的数据,对于Object类型的数据呢,我们可以直接用xx.attr就可以直接访问,但是对于map和array两种类型的数据呢我们需要借助explode函数将array或map类型的数据处理之后,然后在用xx.attr才可以访问。具体示例代码如下:

SQLContext sqlContext = SQLContext.getOrCreate(jsc.sc());
		DataFrame df = MongoSpark.load(jsc).toDF(Docs.class);
		df.registerTempTable("docs");
		df.printSchema();
		DataFrame mtable=sqlContext.sql("select _id.oid,description,name,timestamp,type,videoName from docs");
		DataFrame idtable=sqlContext.sql("select _id.oid,id.course,id.org, id.names.caption,id.names.course,id.names.vertical,id.names.video from docs");
		//这个地方时处理array、map类型json数据的关键
		DataFrame idsTable=df.select(df.col("_id.oid"),org.apache.spark.sql.functions.explode(df.col("ids").as("courseids")));
		DataFrame newss=idsTable.select("oid","col.org","col.course","col.names.course");
		newss.printSchema();
		mtable.show(2,false);
		idtable.show(10,false);
		newss.show(10,false);



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值