技术分析

jsfx
数据可视化技术分析

SpringBoot+SparkSQL操作JSON字符串

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

分享给朋友:

相关文章

分享SQL,查询用户最近一次购买时间间隔

分享SQL,查询用户最近一次购买时间间隔

(1)先创建一张测试表:1   CREATE TABLE `用户购买订单` (2 3   `购买时间` datetime(6)&n...

利用org.mybatis.generator生成实体类

利用org.mybatis.generator生成实体类

springboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类1.添加pom依赖: 2.编写generatorConfig....

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

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

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

如何利用ElasticSearch群集搭建,实现高可用

如何利用ElasticSearch群集搭建,实现高可用

ElasticSearch简介:ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平...

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

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

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

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

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

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

发表评论

访客

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

体验账号:administrator 密码:administrator

  • 7X12小时
    7X12小时

    专家1V1服务

  • 业务保障
    业务保障

    扎实数据根基

  • 合作伙伴
    合作伙伴

    NBIDataVis

  • 强大交付
    强大交付

    实现客户价值