大数据-MapReduce-关于Json数据格式的数据的处理与练习

目录

🐶16.1 Json是什么?

🐶16.2 Json的语法规则

🐶16.3 JSON 和 XML

🐶16.4 java中关于json中的jar包

🥙GSON:由谷歌进行开发

🥙Fastjson: 由阿里进行开发

🐶16.5 JsonObject讲解

🥙1.介绍

🥙2. 依赖

🥙3. 方法

🥙4. 实例-将json数据转换成java对象

🐶16.6 json在MapReduce中的引用


🐶16.1 Json是什么?

  • JSON,全称是 JavaScript Object Notation,即 JavaScript对象标记法。

  • JSON无论对于人,还是对于机器来说,都是十分便于阅读和书写的,而且相比 XML(另一种常见的数据交换格式),文件更小,因此迅速成为网络上十分流行的交换格式。

🐶16.2 Json的语法规则

JSON 的语法规则十分简单,可称得上“优雅完美”,总结起来有:

  • 数组(Array)用方括号(“[]”)表示。

  • 对象(0bject)用大括号(“{}”)表示。

  • 名称/值对(name/value)组合成数组和对象。

  • 名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。

  • 并列的数据之间用逗号(“,”)分隔

🐶16.3 JSON 和 XML

JSON常被拿来与XML做比较,因为JSON 的诞生本来就多多少少要有取代XNL的意思。

相比 XML,JSON的优势如下:

  1. 没有结束标签,长度更短,读写更快

  2. 能够直接被JavaScript解释器解析

  3. 可以使用数组

两者比较

  • JSON:

{"name":"兮动人","age":22,"fruits":["apple","pear","grape"]
}
  • XML:

<root><name>兮动人</name><age>22</age><fruits>apple</fruits><fruits>pear</fruits><fruits>grape</fruits>
</root>

🐶16.4 java中关于json中的jar包

  • 🥙GSON:由谷歌进行开发

下载地址:https://blog.csdn.net/u011403174/article/details/89491448

  • 🥙Fastjson: 由阿里进行开发

下载地址:https://github.com/alibaba/fastjson

🐶16.5 JsonObject讲解

🥙1.介绍

1)JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。

2)JSON(JavaScript Object Notation的首字母缩写)是一种轻量级数据交换格式,最常用于客户端 - 服务器通信。它既易于读/写,又与语言无关。JSON值可以是另一个JSON 对象,数组,数字,字符串,布尔值(true / false)或null。也是后端开发中经常要接触的一个一个类,将要数据封装成json然后传递给前端。

🥙2. 依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.46</version>
</dependency>

 

🥙3. 方法

  • toJSONString(Object)【将指定的对象序列化成Json表示形式】

  • parseObject(String, Class)【将json反序列化为指定的Class模式】

🥙4. 实例-将json数据转换成java对象

这里有一个movie.txt的json文件,数据

package hadoop;import com.alibaba.fastjson.JSONObject;
import com.doit.day03.Student;import java.io.*;public class JsonDemo {public static void main(String[] args) throws IOException {BufferedReader file=new BufferedReader(new FileReader("C:\\Users\\35014\\Desktop\\大数据\\test_file\\movie.txt"));String line=null;while ((line=file.readLine())!=null){//将json反序列化为Movie模式Movie movie = JSONObject.parseObject(line, Movie.class);System.out.println(movie);//将Movie模式序列化为Json表示形式String s = JSONObject.toJSONString(movie);System.out.println(s);}file.close();}
}

 

🐶16.6 json在MapReduce中的引用

获取每部电影的平均分

package com.doit.day03;import com.alibaba.fastjson.JSONObject;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;// 每部电影的平均评分
public class MovieDemo {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
// 创建配置文件对象Configuration conf = new Configuration();// 创建任务对象Job job = Job.getInstance(conf, "movie_rate");// 设置job任务中的map任务的任务类job.setMapperClass(MovieMapper.class);// 设置job任务中的reduce任务的任务类job.setReducerClass(MovieReducer.class);// 设置map端的输出的结果数据的类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(DoubleWritable.class);// 设置reduce端的输出的结果数据的类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(DoubleWritable.class);// 设置任务读取的文件的地址FileInputFormat.setInputPaths(job, new Path("D:\\hdp_data\\movie"));// 设置任务输出的结果文件的地址FileOutputFormat.setOutputPath(job, new Path("D:\\hdp_data\\movie_value"));// 将任务做提交操作job.waitForCompletion(true);}static class MovieMapper extends Mapper<LongWritable, Text, Text, DoubleWritable> {@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {String str = value.toString();Movie mv = JSONObject.parseObject(str, Movie.class);String movie = mv.getMovie();String rate = mv.getRate();System.out.println("movie:"+movie+"rate:"+rate);context.write(new Text(movie), new DoubleWritable(Double.parseDouble(rate)));}}static class MovieReducer extends Reducer<Text, DoubleWritable, Text, DoubleWritable> {@Overrideprotected void reduce(Text key, Iterable<DoubleWritable> values, Context context) throws IOException, InterruptedException {int count = 0;int sum = 0;for (DoubleWritable value : values) {sum += value.get();count++;}double avg = sum / count;context.write(key, new DoubleWritable(avg));}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go学习redis的学习与使用

文章目录 一、redis的学习与使用1.Redis的基本介绍2.Redis的安装下载安装包即可3.Redis的基本使用1&#xff09;Redis的启动&#xff1a;2&#xff09;Redis的操作的三种方式3&#xff09;说明&#xff1a;Redis安装好后&#xff0c;默认有16个数据库&#xff0c;初始默认使用0…

最流行的视频创作者

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 给你两个字符串数组 creators 和 ids &#xff0c;和一个整数数组 views &#xff0c;所有数…

C语言之实现贪吃蛇小游戏篇

text.c #define _CRT_SECURE_NO_WARNINGS 1 #include "snake.h" void test() {int ch 0;do{Snake snake { 0 };//创建了贪吃蛇//1. 游戏开始 - 初始化游戏GameStart(&snake);//2. 游戏运行 - 游戏的正常运行过程GameRun(&snake);//3. 游戏结束 - 游戏善后…

2023-12-15 Fri

坚持打卡第47天 健康方面&#xff08;非常重要‼️&#xff09; 每天运动&#xff0c;有氧和拉伸为主&#xff0c;运动十几分钟即可✅&#xff08;1h&#xff09;零点之前睡觉早上八点之前起床✅ 学习方面 力扣每日一题✅每天把当天APP上的单词复习完&#xff0c;并复习至少…

java导出word使用模版与自定义联合出击解决复杂表格!

1. 看一下需要导出什么样子的表格 如图所示&#xff0c;这里的所有数据行都是动态的&#xff0c;需要根据查询出来的数据循环展示。 如果只是这样的话&#xff0c;使用freemarker应该都可以搞定&#xff0c;但是他一列中内容相同的单元格&#xff0c;需要合并。 这对于表格样式…

conda命令克隆(复制)环境

前情介绍 最近有个需求是&#xff1a;根据已有的环境生成一个新的环境&#xff0c;也就是所需的新环境有大多数包和已有的环境都是相同的&#xff0c;需要改的只是部分&#xff0c;所以呢&#xff0c;克隆一个就再适合不过了&#xff01; 所需命令 conda create -n B --clone…

java设计模式-工厂方法模式

1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口&#xff0c;将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 2.工厂方法模式的主要优缺点 优点&#xff1a; 用户只需要知道具体工厂的名称…

HPM6750系列--第九篇 GPIO详解(基本操作)

一、目的 在之前的博文中我们主要介绍了不同系统不同开发编译调试环境的配置和操作&#xff08;命令行方式、Visual Studio Code、Segger Embedded Studio for RISC-V&#xff09;&#xff0c;以帮助大家准备好学习环境为目的&#xff0c;但是未涉及到芯片本身以及外设的讲解。…

【linux】图形界面Debian的root用户登陆

图形界面Debian默认不允许以root用户登录。这是出于安全考虑&#xff0c;以防止用户使用root权限执行可能损害系统的操作。 如果需要使用root用户&#xff0c;可以通过以下步骤进行登录&#xff1a; 打开终端&#xff0c;使用su命令切换到root用户。修改/etc/gdm3/daemon.con…

大型网站架构演进过程

架构演进 大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户&#xff0c;问题就会变得很棘手。大型网站架构主要就是解决这类问题。 架构选型是根据当前业务需要来的&…

SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发

1. SpringMVC与Servlet的关系 SpringMVC框架是建立在Servlet之上的&#xff0c;提供各种功能&#xff0c;各种封装&#xff0c;各种方便的同时&#xff0c;它一点儿也没有限制Servlet&#xff0c;我们完全可以在SpringMVC的controller中&#xff0c;完全按照Servlet的方式来写…

会话技术+请求转发+重定向

会话包括有状态会话和无状态会话。 有状态会话是指在网络通信过程中&#xff0c;服务器需要记住客户端的状态信息&#xff0c;以便后续的通信能够继续使用这些信息。 无状态会话是无法持续保存信息&#xff0c;http超文本传输协议中的http属于无状态会话 如何保存会话&#xff…

时序预测 | Python实现XGBoost电力需求预测

时序预测 | Python实现XGBoost电力需求预测 目录 时序预测 | Python实现XGBoost电力需求预测预测效果基本描述程序设计参考资料预测效果 基本描述 该数据集因其每小时的用电量数据以及 TSO 对消耗和定价的相应预测而值得注意,从而可以将预期预测与当前最先进的行业预测进行比较…

第二十五章 STL- 常用算法

概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric>体积很小&#xff0c;只包括几个在序列上面进行简…

JS中的String常用的实例方法

splice():分隔符 把字符串以分隔符的形式拆分为数组 const str pink,red;const arr str.split(,);console.log(arr);//Array[0,"pink";1:"red"]const str1 2022-4-8;const arr1 str1.split(-);console.log(arr1);//Array[0,"2022";1:"…

Vue3快速上手笔记

Vue3快速上手 1.Vue3简介 2020年9月18日&#xff0c;Vue.js发布3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;海贼王&#xff09;耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址&#xff1a;https://github.com/vuejs/vue-next/release…

实操Nginx(七层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录 Tomcat多实例部署&#xff08;192.168.17.27&#xff09; 1.安装jdk&#xff0c;设置jdk的环境变量 2.安装tomcat在一台已经部署了tomcat的机器上复制tomcat的配置文件取名tomcat1 ​编辑 编辑配置文件更改端口号&#xff0c;将端口号改为8081 启动 tomcat&#xff…

SpringBoot之响应的详细解析

2. 响应 前面我们学习过HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09; 那么Controller程序呢&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 2.1 ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了…

Linux面试题精选:提升你的面试准备

大家有关于JavaScript知识点不知道可以去 &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;ajax专栏&#xff1a;ajax知识点 &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 学习…