技术分析

jsfx
数据可视化技术分析

SpringBoot+SparkSQL操作JSON字符串

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

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

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

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

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

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

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

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

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

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

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

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

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

为什么不再使用D3.js、Echarts做数据可视化

为什么不再使用D3.js、Echarts做数据可视化

D3是什么全称是(Data-Driven Documents),一个被数据驱动的文档简单点,是一个JavaScript函数库,使用它主要用来做数据可视化。D3 是一个开源项目,作者是纽约时报的工程师。...

发表评论

访客

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

体验账号:administrator 密码:administrator

  • 7X12小时
    7X12小时

    专家1V1服务

  • 业务保障
    业务保障

    扎实数据根基

  • 合作伙伴
    合作伙伴

    NBIDataVis

  • 强大交付
    强大交付

    实现客户价值