Java接入Apache Spark(入门环境搭建、常见问题)

Java接入Apache Spark(环境搭建、常见问题)

背景介绍

Apache Spark 是一个快速的,通用的集群计算系统。它对 Java,Scala,Python 和 R 提供了的高层 API,并有一个经优化的支持通用执行图计算的引擎。它还支持一组丰富的高级工具,包括用于 SQL 和结构化数据处理的 Spark SQL,用于机器学习的 MLlib,用于图计算的 GraphX 和 Spark Streaming。
Spark 是 MapReduce 的替代方案,而且兼容 HDFS、Hive,可融入 Hadoop 的生态系统,以弥补 MapReduce 的不足。,Spark 基于内存的运算要快 100 倍以上,基于硬盘的运算也要快 10 倍以上。Spark 实现了高效的 DAG 执行引擎,可以通过基于内存来高效处理数据流

Apache Spark官网:https://spark.apache.org/
Apache Spark中文官网:https://spark.apachecn.org/

开发环境

  • win11 操作系统
  • IntelliJ IDEA 2023.2.5
  • jdk1.8 (corretto-1.8.0_392)

资源下载

Hadoop下载
  • hadoop下载地址:
    https://hadoop.apache.org/releases.html
    在这里插入图片描述在这里插入图片描述也可以直接进入下载列表,进行下载,我这里使用的是hadoop-3.3.6。下载地址:https://dlcdn.apache.org/hadoop/common/

在这里插入图片描述

在这里插入图片描述

winutils下载
  • winutils下载地址:
    gitHub:https://github.com/SirMin/winutils/tree/master
    下载该目录下的hadoop.dll 和 winutils.exe 文件
    在这里插入图片描述
    或者直接在CSDN下载,【免费】不需要积分。
    Hadoop 3.3.6 Windows系统安装包 和 winutils的文件

安装环境

安装Hadoop【别安装在 Program Files这类带空格的文件夹下,因为环境变量找不着!!!】
  • 将下载好的hadoop-3.3.6.tar.gz包,放到想要安装的目录,我这里是放在D盘(D:\hadoop-3.3.6.tar.gz)

  • 解压hadoop-3.3.6.tar.gz文件【注意:需要在cmd中以管理员身份运行】
    在这里插入图片描述

  • 进入文件目录
    在这里插入图片描述
    等待执行结束

  • 配置HADOOP_HOME环境变量,进入 此电脑 -> 右键 -> 属性 -> 高级系统设置 -> 环境变量
    在这里插入图片描述选择新建,配置变量名 HADOOP_HOME ,变量值为 hadoop的解压路径
    然后在系统变量的path中加入以下两个变量,保存即可。
    在这里插入图片描述

%HADOOP_HOME%\bin
%HADOOP_HOME%\sbin

在这里插入图片描述在这里插入图片描述

tar zxvf hadoop-3.3.6.tar.gz

解压后路径

D:\hadoop-3.3.6
  • 配置 Hadoop 环境脚本
    在解压后的路径中(D:\Program Files\hadoop-3.3.6)找到D:\Program Files\hadoop-3.3.6\etc\hadoop\hadoop-env.cmd脚本,配置JDK的JAVA_HOME真实路径。
    在这里插入图片描述
## 替换前
set JAVA_HOME=%JAVA_HOME%
## 替换后
set JAVA_HOME=C:\Users\cessz\.jdks\corretto-1.8.0_392
安装winutils
  • 将winutils下载地址里 hadoop.dll 和 winutils.exe 文件拷贝到 C:\Windows\System32
    目录中

    重启电脑

  • 或者将winutils下载地址里的所有文件下载下来放入,hadoop的bin文件夹(D:\hadoop-3.3.6\bin)

    重启IDEA

检查是否安装成功

  • 检测环境变量是否配置成功
    bash hadoop -version

    在这里插入图片描述

  • 在IDEA中测试
    引入依赖

<dependency> <!-- Spark dependency --><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.5.0</version><scope>provided</scope>
</dependency>
<dependency> <!-- Spark dependency --><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.12</artifactId><version>3.5.0</version><scope>provided</scope>
</dependency>

编写测试Application

import org.apache.spark.api.java.function.FilterFunction;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.SparkSession;public class SimpleApp {public static void main(String[] args) {String logFile = "D:\\IdeaProjects\\project\\README.md";SparkSession spark = SparkSession.builder().appName("Simple Application").master("local[*]").getOrCreate();Dataset<String> logData = spark.read().textFile(logFile).cache();long numAs = logData.filter((FilterFunction<String>) s -> s.contains("base")).count();long numBs = logData.filter((FilterFunction<String>) s -> s.contains("common")).count();System.out.println("Lines with base: " + numAs + ", lines with common: " + numBs);spark.stop();}
}

查看打印读取到的字符数量
在这里插入图片描述

常见问题

启动问题:IDEA:Error running,Command line is too long. Shorten command line启动行过长

解决方案:
打开Edit Configurations,配置保存完成,Apply之后启动即可。
编辑Applicantion Configuration
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Spark执行任务时,找不到主节点 Exception in thread “main” org.apache.spark.SparkException: A master URL must be set in your configuration

在Spark中,主节点的地址配置位于spark.master属性中,默认值为local[],表示使用本地模式运行。本文章是本地搭建使用的,所以加上 .master("local[]") 即可。
在这里插入图片描述

参考博客

  • java Exception in thread “main” org.apache.spark.SparkException: A master UR
  • IDEA:Error running,Command line is too long. Shorten command line解决方案
  • Java大数据处理框架推荐:处理大数据的工具推荐
  • 【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | 设置 Hadoop 环境变量 | 配置 Hadoop 环境脚本 | 安装 winutils )
  • Hadoop3.x配置流程(Windows)

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

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

相关文章

归并排序-排序算法

前言 如果一个数组的左右区间都有序&#xff0c;我们可以使用一种方法&#xff08;归并&#xff09;&#xff0c;使这个数组变得有序。 如下图&#xff1a; 过程也很简单&#xff0c;分别取左右区间中的最小元素&#xff0c;再把其中较小的元素放到临时数组中&#xff0c;例如…

ElasticSearch 学习9 spring-boot ,elasticsearch7.16.1实现中文拼音分词搜索

一、elasticsearch官网下载&#xff1a;Elasticsearch 7.16.1 | Elastic 二、拼音、ik、繁简体转换插件安装 ik分词&#xff1a;GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized d…

[开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

C与Python中的赋值、浅拷贝与深拷贝 1. Python中的赋值、浅拷贝、深拷贝2. C中的赋值、浅拷贝、深拷贝2.1 概念2.2 示例&#xff1a;从例子中理解1) 不可变对象的赋值、深拷贝、浅拷贝2) 可变对象的赋值、浅拷贝与深拷贝3) **可变对象深浅拷贝(外层、内层改变元素)** 写在前面&…

Salesforce财务状况分析

纵观Salesforce发展史和十几年财报中的信息&#xff0c;Salesforce从中小企业CRM服务的蓝海市场切入&#xff0c;但受限于中小企业的生命周期价值和每用户平均收入小且获客成本和流失率不对等&#xff0c;蓝海同时也是死海。 Salesforce通过收购逐渐补足品牌和产品两块短板&am…

系统架构设计师教程(十)软件可靠性基础知识

软件可靠性基础知识 10.1 软件架构演化和定义的关系10.1.1 演化的重要性10.1.2 演化和定义的关系 10.2 面向对象软件架构演化过程10.2.1 对象演化10.2.2 消息演化10.2.3 复合片段演化10.2.4 约束演化 10.3 软件架构演化方式的分类10.3.1 软件架构演化时期10.3.2 软件架构静态演…

mp4文件全部转换为mp3

问题 今天突发奇想&#xff0c;想把mp4视频转换为mp3来收听&#xff0c;于是想到了ffmpeg工具 步骤 安装ffmpeg环境 要在 Windows 上配置 FFmpeg 环境&#xff0c;你可以按照以下步骤进行操作&#xff1a; 下载 FFmpeg&#xff1a; 首先&#xff0c;你需要下载 FFmpeg 的 W…

C#进阶-IIS服务器发布ASP.NET项目

对于云服务器&#xff0c;程序员一般不会陌生&#xff0c;如果项目需要发布到现网&#xff0c;那么服务器是必不可缺的一项硬性条件&#xff0c;那么如何在云服务器上部署一个项目&#xff0c;需要做哪些配置准备&#xff0c;下面就由本文档为大家讲解&#xff0c;本篇以 IIS服…

暴打小苹果

欢迎来到程序小院 暴打小苹果 玩法&#xff1a;鼠标左键点击任意区域可发招暴打&#xff0c;在苹果到达圆圈时点击更容易击中&#xff0c; 30秒挑战暴打小苹果&#xff0c;打中一次20分&#xff0c;快去暴打小苹果吧^^。开始游戏https://www.ormcc.com/play/gameStart/247 htm…

PXE 高效批量网络装机

前提&#xff1a; 虚拟机恢复到初始化 调整网卡为vm1 关闭防火墙 安全linux systemctl stop firewalld vim /etc/selinux/config 配置IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 重启网卡 systemctl restart network 挂载磁盘 安装yum源 安装服务 yum install vs…

uni-app做A-Z排序通讯录、索引列表

上图是效果图&#xff0c;三个问题 访问电话通讯录&#xff0c;拿数据拿到用户的联系人数组对象&#xff0c;之后根据A-Z排序根据字母索引快速搜索 首先说数据怎么拿 - 社区有指导https://ask.dcloud.net.cn/question/64117 uniapp 调取通讯录 // #ifdef APP-PLUSplus.contac…

【Git】本地仓库文件的创建、修改和删除

目录 一、基本信息设置 1、设置用户名2、设置用户名邮箱 二、Git仓库操作介绍 1、创建一个新的文件夹2、在文件内初始化git仓库&#xff08;创建git仓库&#xff09;3、向仓库中添加文件 1.创建一个文件2.将文件添加到暂存区3.将暂存区添加到仓库 4、修改仓库文件 1.修改文件2.…

基于JAVA+SpringBoot的咖啡商城

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着互联网的普及和发…

Windows下Redis5+可视化软件下载、安装和配置教程-2024年1月8日

Windows下Redis5下载、安装和配置教程-2024年1月8日 一、下载二、安装三、配置环境四、配置可视化客户端 一、下载 redis是现在是没有对win系统版进行维护的&#xff0c;这个是大神完成的&#xff0c;目前是到5版本&#xff0c;选择Redis-x64-5.0.14.1.zip点击下载 下载地址&…

使用Navicat导入csv数据至mysql

问题 使用Navicat导入csv数据至mysql 详细问题 笔者有已进行数据处理的csv&#xff0c;需要将数据信息导入mysql中 解决方案 步骤1、建立数据表&#xff0c;字段信息&#xff08;最好&#xff09;与csv字段信息保持一致&#xff0c;方便后续导入。 具体的&#xff0c;双击…

Surface mesh结构学习

CGAL 5.6 - Surface Mesh: User Manual Surface_mesh 类是半边数据结构的实现&#xff0c;可用来表示多面体表面。它是半边数据结构&#xff08;Halfedge Data Structures&#xff09;和三维多面体表面&#xff08;3D Polyhedral Surface&#xff09;这两个 CGAL 软件包的替代品…

2023一带一路暨金砖国家技能发展与技术创新大赛“网络安全”赛项省选拔赛样题卷①

2023金砖国家职业技能竞赛"网络安全" 赛项省赛选拔赛样题 2023金砖国家职业技能竞赛 省赛选拔赛样题第一阶段&#xff1a;职业素养与理论技能项目1. 职业素养项目2. 网络安全项目3. 安全运营 第二阶段&#xff1a;安全运营项目1. 操作系统安全配置与加固任务一Linux …

OpenGL排坑指南—贴图纹理绑定和使用

一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式&#xff0c;主要步骤是先创建一个纹理的对象&#xff0c;和创建顶点VAO类似&#xff0c;然后就开始绑定这个纹理&#xff0c;最后在循环中使用&#xff0c;有时候可能还要用到激活纹理单元的函数。然而&#xff…

聚对苯二甲酸乙二醇酯PET的特性有哪些?UV胶水能够粘接聚对苯二甲酸乙二醇酯PET吗?又有哪些优势呢?

聚对苯二甲酸乙二醇酯&#xff08;Polyethylene Terephthalate&#xff0c;PET&#xff09;是一种常见的塑料材料&#xff0c;具有许多特性&#xff0c;包括&#xff1a; 1.化学式&#xff1a; PET的化学式为 (C10H8O4)n&#xff0c;其中n表示重复单元的数量。 2.透明度&#…

4.4 媒资管理模块 - 分布式任务处理介绍、视频处理技术方案

媒资管理模块 - 视频处理 文章目录 媒资管理模块 - 视频处理一、视频转码1.1 视频转码介绍1.2 FFmpeg 基本使用1.2.1 下载安装配置1.2.2 转码测试 1.3 工具类1.3.1 VideoUtil1.3.2 Mp4VideoUtil1.3.3 测试工具类 二、分布式任务处理2.1 分布式任务调度2.2 XXL-JOB 配置执行器 中…

C++(10)——模板

目录 1.什么是泛式编程以及模板的引入&#xff1a; 2. 模板&#xff1a; 2.1 函数模板&#xff1a; 2.2 类模板&#xff1a; 1.什么是泛式编程以及模板的引入&#xff1a; 在之前排序的部分中&#xff0c;为了完成某个特定功能&#xff0c;经常会用到交换函数&#xff0c;即…