Spark——Java代码同python代码交互(Java端代码)

Spark编程基础python版第二版代码总结 学习笔记(持续更新中)——Spark编程基础python版第二版代码部分 阅读详情

 

一、同Python整体交互逻辑

如下图所示,

1、Java执行器节点获取数据后,保存至HDFS系统中,并通过kafka发送消息到python端,告知其HDFS地址及相关参数信息。

2、Python端在获取消息后,执行算法,将算法结果保存至新的HDFS地址下,并返回成功标识、报错信息与相关参数信息。

                            

二、Java端源码解析

1、启动spark,并获取数据

SparkConf conf = new SparkConf().setAppName("job").setMaster(
					"local[*]");
SparkContext sqlContext= new SparkContext(conf);
//使用将json文件转换成dataset
Dataset<Row> df ==sqlContext.read.json("C:\\users.json")
//可以看一下取到的数据
df.show()

2、将获取到的Dataset保存至HDFS系统中

//集群环境要设置HADOOP_USER_NAME不然其他人取不到数据
System.setProperty("HADOOP_USER_NAME", "root");
// 将dataset<Row>存入HDFS
df.toDF().write().format("json").save(hdfsAddr);

3、发送报文至kafka

public void sendMsg2Kafka(String value) {
		System.out.println("开始发送:" + value);
		Properties props = new Properties();
		// 配置kafka地址及端口ip:端口
		props.put("bootstrap.servers", kafkaIp);
		// 发送失败后重复3次
		props.put("retries", 3);
		// 发送的key为String
	props.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
		// 发送的value为String
	props.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");
		// 消息发送主题
		String topic = "wordSeg-producer";
		Producer<String, String> procuder = new KafkaProducer<String, String>(props);
		// 构建kafka消息生产者
		ProducerRecord<String, String> msg = new ProducerRecord<String, String>(
				topic, value);
		System.out.println("+=======发送消息:" + msg);
		procuder.send(msg);
		System.out.println("send message over.");
		procuder.close(100, TimeUnit.MILLISECONDS);

	}

4、接收kafka上的消息

public JSONObject getKafkaMsg() {
		Properties props = new Properties();
		// 配置kafka地址及端口ip:端口
		props.put("bootstrap.servers", kafkaIp);
		// 消费者的组id
		props.put("group.id", "test1");
		// 自动提交确认
		props.put("enable.auto.commit", "true");
		// 自动提交间隔
		props.put("auto.commit.interval.ms", "1000");
		// 获取最后一个偏移量
		props.put("auto_offset_reset", "latest");
		// 超时时间
		props.put("session.timeout.ms", "30000");
		// 接收的key为String
	props.put("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
		// 接收的value为String
	props.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");
		// 构建消息消费者
		KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
		// 订阅主题
		consumer.subscribe(Arrays.asList("wordSeg-consumer"));
		JSONObject json = new JSONObject();
		try {
			// 等待接收数据
			while (true) {
				// 获取数据
		ConsumerRecords<String, String> records = consumer.poll(100);
			for (ConsumerRecord<String, String> record : records) {
			System.out.println("+======偏移量:" + records.count());
			// 将获取到的value值转换成json
			json = JSONObject.fromObject(record.value());
			// 判断json的返回类型
			if ((boolean) json.get("status")) {
				System.out.println(json);
				return json;
			}
			}
			}} finally {
			consumer.close();
		}
	}


5、解析python端发送到kafka上的消息,获取HDFS上的数据

/**
* 解析报文
*/
SparkSession spark = SparkSession.builder().getOrCreate();
// 获取python处理完后的存储数据的HDFS地址
String resPath = responseJson.get("hdfsReAddr").toString();
System.out.println("+=====resPath:" + resPath);
// 通过该地址获取数据
JavaRDD<String> lines = JavaSparkContext.fromSparkContext(
spark.sparkContext()).textFile(resPath);
// javardd转dataset
Dataset<Row> resD = spark.read().json(lines);
resD.show(100, false);

 

解决java+Spark进行数据去重的具体操作步骤 数据去重是处理大数据的一个常见任务,可以帮助我们快速识别和删除重复的数据行。然后,我们可以使用SparkSession来加载我们的数据。在上述代码中,我们调用了dropDuplicates()方法来对数据进行去重操作,并将结果保存在一个新的Dataset对象中。一旦我们加载了数据,我们就可以执行数据去重操作了。在上面的代码中,我们调用了write().csv()方法来将去重后的数据保存为CSV格式,并指定了输出路径。现在,你可以将数据去重的代码封装在一个可执行的Java程序中,并运行它来实现数据去重。 阅读详情

相关推荐

Java (Spark案例分析)

三、需求:加入自定义分区,按照学院分区,相同的学院分为一个结果文件。二、需求:求出每个学院 访问第一位的网址。一、需求:计算网页访问量前三名。五、数据access.log。四、pom.xml文件。

lmrylll的博客 604

Java使用Spark入门级非常详细的总结

本文介绍了如何使用Java编写Spark应用程序。我们首先创建了一个SparkContext对象,然后使用textFile方法读取了一个文本文件,并使用flatMap和reduceByKey方法计算了单词出现的次数。最后,我们使用spark-submit命令运行了应用程序。

qq_37480069的博客 1万+

使用Java和Spark进行大数据分析

在当今的大数据时代,快速和高效地处理和分析海量数据是许多企业的关键需求。本文将介绍如何使用Java和Spark进行大数据分析,涵盖Spark的基本概念、配置环境及典型的应用示例。本文详细介绍了如何使用Java和Spark进行大数据分析,包括数据读取、处理和结果输出的具体实现方法。通过使用Spark强大的分布式计算能力和Java的灵活性,可以高效地处理和分析海量数据,从而满足实际生产中的大数据分析需求。以下示例展示了如何使用Java和Spark进行基本的数据分析任务,包括数据读取、处理和结果输出。

省赚客开发者博客 1148

Java使用Spark进行数据转换的常用方法和案例

本文介绍了Java使用Spark进行数据转换的方法和案例,包括map、filter、reduce、join等方法,以及单词计数、排序、分组等案例。Spark提供了丰富的API和工具,可以帮助我们快速、高效地处理大数据。

qq_37480069的博客 2428

Spark、Python spark、Hadoop简介

Spark、Python spark、Hadoop简介 Spark简介 1、Spark简介及功能模块 Spark是一个弹性的分布式运算框架,作为一个用途广泛的大数据运算平台,Spark允许用户将数据加载到cluster集群的内存中储存,并多次重复运算,非常适合用于机器学习算法。 Spark的核心是RDD(Resilient Distributed Dataset)弹性分布式数据集,...

SanFancsgo的博客 6991

使用Python开发spark

spark

qq_47844519的博客 5718

Spark环境搭建和使用方法

本文讲解如何在Linux系统中安装Spark并配置Spark环境,以及Spark的基本使用方法。

Morse_Chen的博客 1万+

python、scala、java分别实现在spark上实现WordCount

下面分别贴出python、scala、java版本的wordcount程序: python版: import logging from operator import add from pyspark import SparkContext logging.basicConfig(format='%(message)s', level=logging.INFO) #import lo

YQlakers的博客 1949

java和python数据交互_Spark通信原理之Python与JVM的交互

我们知道Spark平台是用Scala进行开发的,但是使用Spark的时候最流行的语言却不是Java和Scala,而是Python。原因当然是因为Python写代码效率更高,但是Scala是跑在JVM之上的,JVM和Python之间又是如何进行交互的呢?在实际运行过程中,JVM并不会直接和Python进行交互,JVM只负责启停Python脚本,而不会向Python发送任何特殊指令。启动脚本同执行外部...

weixin_39679468的博客 224

JAVA、Spark、Python连接Redis

前面已经详细的和大家说过Redis,接下来就和大家说下Redis和其它得集成,以及如何操作Redis: 首先说下Java时如何操作redis: JAVA连接Redis 我们还是使用IDEA来执行下,先创建maven就不必多说,先导redis的依赖包到pom.xml中 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> &lt

zp17834994071的博客 680

基于spark 实现混合编程:跨语言交互与调用 ---- scala 、 python、java 如何相互调用

文章大纲python 调用scalascala 调用 python使用jython参考文献 python 调用scala python 作为一种胶水语言调用其他语言比较容易 scala 代码 package example import org.apache.spark.sql.DataFrame; import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.Spa

shiter编写程序的艺术 1016

Spark中Python与JVM的交互

原文链接:Spark通信原理之Python与JVM的交互 我们知道Spark平台是用Scala进行开发的,但是使用Spark的时候最流行的语言却不是Java和Scala,而是Python。原因当然是因为Python写代码效率更高,但是Scala是跑在JVM之上的,JVM和Python之间又是如何进行交互的呢? 在实际运行过程中,JVM并不会直接和Python进行交互,JVM只负责启停Pytho...

jia_7m的博客 647

c# U盘禁用---守护进程(插入,拔出,卸载等操作)

一、简介 传统的对U盘禁用,我们多采用修改注册表的方式,详情参考:https://blog.youkuaiyun.com/qq_25372599/article/details/79815407;本文将介绍一种其他的方式–后台守护程序。其原理非常简单:当守护程序检测到U盘的插入信号,我们自动卸载U盘,致使系统无法识别U盘,达到禁用U盘的效果。 二、程序设计 2.1 变量定义 strin...

星星之火燃亮码空 2846

大数据Spark(python版)

大数据大数据,Spark,Hadoop,python大数据Spark一、安装 大数据,Spark,Hadoop,python 大数据Spark 一、安装

Acegem的博客 3269

AI人工智能领域多模态大模型的数字孪生应用

本文旨在系统性地介绍多模态大模型在数字孪生领域的最新应用进展,探讨其技术原理、实现方法和应用价值。内容范围涵盖从基础概念到前沿技术,从理论分析到实践案例。文章首先介绍多模态大模型和数字孪生的基本概念,然后深入分析两者的结合点,接着通过具体案例展示应用实践,最后探讨未来发展趋势和挑战。多模态大模型:能够同时处理和融合多种数据模态(如文本、图像、视频、音频等)的大型人工智能模型数字孪生:物理实体或系统的虚拟副本,通过实时数据同步实现虚实交互跨模态融合:将不同数据模态的信息进行有效整合和关联的技术。

AI云原生与云计算技术学院 1325

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 375

PySpark与Java/Scala交互中的一些常用的Spark对象

一些常用的Spark对象前言一些常用的Spark对象SparkContextSQLContextRDDSDataFrames参考资料 前言 在PySpark中调用Scala/Java代码时,我们会遇到一些负载的对象需要传递,例如一些spark对象。在环境之间(Python / Java)传递时,我们必须将Spark对象显式地包装/提取到java对象中。 下面是一些常用的Spark对象。 一些常用的...

Lestat.Z.的博客 1095

中国境内及周边2839个站点的日降水量逐日降水数据集(1961-2022,0.1°/0.25°/0.5°)1、数据年份:1961-2022,日数据2、数据范围:中国境内及周边2839个站点的日降

CHM_PRE数据集基于中国境内及周边1961至今共2839个站点的日降水观测,在传统的“降水背景场+ 降水比值场”的数据集构建思路上,尝试应用月值降水约束和地形特征校正,并依据中国范围内约4万个高密度站点2015–2019年的日降水量插值后数据进行精度评价。

yushibing717的博客 2788

教你如何在Spark Scala/Java应用中调用Python脚本

摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同。

华为云官方博客 1万+

STM32H7多通道ADC数据采集实战:CubeMX配置ADC1/2/3+DMA/BDMA+Cache避坑全记录

本文详细解析了STM32H7多通道ADC数据采集的实战配置,涵盖CubeMX中ADC1/2/3与DMA/BDMA的协同设置及Cache一致性处理。通过硬件架构分析、DMA优化技巧和Cache避坑指南,帮助开发者实现高精度数据采集,适用于电机控制、环境监测等嵌入式系统。

weixin_28744613的博客 292

出现 Tomcat:HTTP状态 404 - 未找到解决方法(图文分析)

出现如下问题 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[/ajax_war_exploded/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.69 解决方法如下: 网上中的操作有步操作多数都误导 这个部署的环境目录上面是web.xml 下面的目录路径是web即可不用到webapp 保存重启服务器即可使用 其他配置中启动tomcat的操作具体 JRE 1.8 ...

码农研究僧的博客 13万+

python通信原理_Spark通信原理之Python与JVM的交互

我们知道Spark平台是用Scala进行开发的,但是使用Spark的时候最流行的语言却不是Java和Scala,而是Python。原因当然是因为Python写代码效率更高,但是Scala是跑在JVM之上的,JVM和Python之间又是如何进行交互的呢?在实际运行过程中,JVM并不会直接和Python进行交互,JVM只负责启停Python脚本,而不会向Python发送任何特殊指令。启动脚本同执行外部...

weixin_39865061的博客 169

【系统分析师】2025年下半年真题:论文及解题思路

摘要 本文探讨软件测试技术的应用,重点关注静态测试与动态测试的比较。静态测试在不运行程序的情况下,通过审查、走查等方式分析需求、设计文档和代码,能早期发现高层次缺陷,降低修复成本。动态测试通过实际运行程序,使用单元测试、集成测试等方法验证功能性能,是发现运行时错误的唯一途径。二者在缺陷类型、介入阶段和修复成本上具有互补性,建议项目实践中结合使用以提升软件质量。

数据知道的博客 5788

Python安装spark

文章目录一.配置版本二.配置环境1.配置JDK2.配置Spark三.配置Hadoop 说明:   本文使用anconda+pycharm安装spark 一.配置版本 Java JDK 1.8.0_111 Python 3.9.6 Spark 3.1.2 Hadoop 3.2.2 二.配置环境 1.配置JDK 从官网下载相应JDK的版本安装,并进行环境变量的配置 (1)在系统变量新建JAVA_HOME,根据你安装的位置填写变量值 (2)新建CLASSPATH 变量值:.;%JAVA_HOME%\lib\

YFater的博客 3837

华为OD机试2025C卷 - 精准核酸检测 (C++ & Python & JAVA & JS & GO)

华为OD机试2025C卷 精准核酸检测,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1708

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python——spark入门

本文中,我们将首先讨论如何在本地机器上或者EC2的集群上设置Spark进行简单分析。然后,我们在入门级水平探索Spark,了解Spark是什么以及它如何工作(希望可以激发更多探索)。最后两节我们开始通过命令行与Spark进行交互,然后演示如何用Python写Spark应用,并作为Spark作业提交到集群上。

m0_59485658的博客 4244

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 如何解决springboot整合spark日志打印级别问题?
下一篇: 长夜梦中惊坐起,Vue的双向绑定到底是个什么东西?
SmallSunL
博客等级 码龄9年 29粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值