技术分析

jsfx
数据可视化技术分析

SpringBoot+SparkSQL操作JSON字符串

技术分析8605年前 (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

分享给朋友:

相关文章

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

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

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

.NET Core WebAPI集成JWT,实现身份验证

.NET Core WebAPI集成JWT,实现身份验证

前两篇文章给大家介绍了在.NET Core中如何使用Swagger的文章,那今天给大家分享一下JWT在做接口开发的同学可能都有感受,我的接口如何保护的问题,如果没有身份验证,那不是接口完全暴露在外面,...

将.NET Core编写的数据可视化项目打包成Docker镜像,实现容器化部署

将.NET Core编写的数据可视化项目打包成Docker镜像,实现容器化部署

第一步 环境准备,安装docker环境:1234567891011通过命令安装docker:sudo apt-get install -y docker.io 启动Docker服务...

.NET Core WebAPI集成Swagger做接口管理

.NET Core WebAPI集成Swagger做接口管理

什么是Swagger?Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关...

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

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

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

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

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

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

发表评论

访客

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

体验账号:administrator 密码:administrator

  • 7X12小时
    7X12小时

    专家1V1服务

  • 业务保障
    业务保障

    扎实数据根基

  • 合作伙伴
    合作伙伴

    NBIDataVis

  • 强大交付
    强大交付

    实现客户价值