技术分析

jsfx
数据可视化技术分析

SpringBoot+SparkSQL操作JSON字符串

技术分析1732年前 (2019-07-18)大数据

在SpringBoot中通过maven来做包管理构建,有几个地方需要注意一下的,需要解决包之间的冲突,否则运行时会报错:

(1)SparkSQL中需要先排除两个包:

复制代码
 1         <dependency> 2             <groupId>org.apache.spark</groupId> 3             <artifactId>spark-sql_2.11</artifactId> 4             <version>${spark.version}</version> 5             <exclusions> 6                 <exclusion> 7                     <groupId>org.codehaus.janino</groupId> 8                     <artifactId>janino</artifactId> 9                 </exclusion>10                 <exclusion>11                     <groupId>org.codehaus.janino</groupId>12                     <artifactId>commons-compiler</artifactId>13                 </exclusion>14             </exclusions>15         </dependency>
复制代码

(2)重新引入:

复制代码
 1         <dependency> 2             <groupId>org.codehaus.janino</groupId> 3             <artifactId>commons-compiler</artifactId> 4             <version>2.7.8</version> 5         </dependency> 6  7         <dependency> 8             <groupId>org.codehaus.janino</groupId> 9             <artifactId>janino</artifactId>10             <version>2.7.8</version>11         </dependency>
复制代码

ok,准备工作做完之后,开始代码层面得工作:

主要给大家演示的场景是将json字符串转换成临时表,然后通过sparkSQL操作临时表,非常简单方便:

复制代码
 1 public class SparkJsonSQL { 2  3     public void Exec(){ 4         SparkConf conf = new SparkConf(); 5         conf.setMaster("local[2]").setAppName("jsonRDD"); 6         JavaSparkContext sc = new JavaSparkContext(conf); 7         SQLContext sqlContext = new SQLContext(sc); 8  9         JavaRDD<String> nameRDD = sc.parallelize(Arrays.asList(10                 "{\"name\":\"zhangsan\",\"age\":\"18\"}",11                 "{\"name\":\"lisi\",\"age\":\"19\"}",12                 "{\"name\":\"wangwu\",\"age\":\"20\"}"13         ));14         JavaRDD<String> scoreRDD = sc.parallelize(Arrays.asList(15                 "{\"name\":\"zhangsan\",\"score\":\"100\"}",16                 "{\"name\":\"lisi\",\"score\":\"200\"}",17                 "{\"name\":\"wangwu\",\"score\":\"300\"}"18         ));19 20         Dataset<Row> namedf = sqlContext.read().json(nameRDD);21         Dataset<Row> scoredf = sqlContext.read().json(scoreRDD);22         namedf.registerTempTable("name");23         scoredf.registerTempTable("score");24 25         Dataset<Row> result = sqlContext.sql("select name.name,name.age,score.score from name,score where name.name = score.name");26         //Dataset<Row> result = sqlContext.sql("select * from name");27         result.show();28         result.foreach(x ->System.out.print(x));29         sc.stop();30     }31 }
复制代码

我们将程序运行起来看看效果:

扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由策意data发布,如需转载请注明出处。

转载请注明出处:http://dsj.ceyicm.cn/reed/16.html

分享给朋友:

相关文章

实战:SpringBoot+KafKa实现生产者和消费者功能

实战:SpringBoot+KafKa实现生产者和消费者功能

1.配置pom包<dependency>  <groupId>org.springframework.kafka</groupId>  <...

集成Swagger接口文档分组配置.net core

集成Swagger接口文档分组配置.net core

(一)回顾:上一篇为大家介绍了在.NET Core中如何集成Swagger的介绍,想想集成操作其实非常简单便捷,实质就三个步骤:(1)在项目中执行nuget命令,拉取Swagger包到项目:Insta...

.NET Core中使用OOM框架,AutoMapper的使用介绍

.NET Core中使用OOM框架,AutoMapper的使用介绍

(一)什么是OOM:OOM顾名思义,Object-Object-Mapping实体间相互转换,AutoMapper其意义在于帮助你无需手动的转换简单而又麻烦的实体间关系。(二)AutoMapper是什...

从dockerhub拉取NBI可视化产品镜像

从dockerhub拉取NBI可视化产品镜像

前两篇文章介绍了将docker镜像打包,镜像发布,那么今天为大家介绍完一个闭环操作,如何从dockerhua拉取镜像,运行镜像,下面将演示从ubuntu和centos系统上拉取和运行镜像操作:操作流程...

Jenkins+svn+ftp自动化发布asp.net项目

Jenkins+svn+ftp自动化发布asp.net项目

今天将自己所掌握的(Jenkins+svn+ftp自动化发布asp.net项目)知识分享给大家,希望能帮组到大家:(1)先下载Jenkins并安装;(2)安装.Net所需要的插件;(3)配置插件;(4...

.NET Core中过滤器Filter的使用介绍

.NET Core中过滤器Filter的使用介绍

知识点回顾:前面几篇文章分别给大家介绍了(1)Swagger的集成和用法;(2)JWT身份验证的集成和用法;(3)OOM框架AnutoMapper对象映射的用法;今天给大家介绍过滤器Filter的基本...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
每一次合作都多一位朋友

体验账号:administrator 密码:administrator

  • 7X12小时
    7X12小时

    专家1V1服务

  • 业务保障
    业务保障

    扎实数据根基

  • 合作伙伴
    合作伙伴

    NBIDataVis

  • 强大交付
    强大交付

    实现客户价值