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.hqwc.cn/news/346175.html

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

相关文章

Docker容器进入的4种方式(推荐最后一种)

在使用Docker创建了容器之后&#xff0c;大家比较关心的就是如何进入该容器了&#xff0c;其实进入Docker容器有好几多种方式&#xff0c;这里我们就讲一下常用的几种进入Docker容器的方法。 进入Docker容器比较常见的几种做法如下&#xff1a; 使用docker attach使用SSH使用…

RK3568驱动指南|第十二篇 GPIO子系统-第134章 三级节点操作函数实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

CSS 下载进度条

<template><view class=btn>下载中</view></template><script></script><style>/* 设置整个页面的样式 */body {width: 100vw; /* 页面宽度为视口宽度 */background: #000000; /* 背景颜色为白色 */display: flex; /* 使用 flex…

python|切片

切片的语法格式 object[start_index:end_index:step] &#xff08;1&#xff09;step步长&#xff1a;有正负&#xff0c;正表示正着走&#xff0c;负表示负着走&#xff0c;步长的绝对值代表一步走的距离。 &#xff08;其中&#xff0c;在深度学习中卷积也有步长的说法&…

【博士每天一篇论文-理论分析】Dynamical systems, attractors, and neural circuits

阅读时间&#xff1a;2023-11-19 1 介绍 年份&#xff1a;2016 作者&#xff1a;Paul Miller 马萨诸塞州沃尔瑟姆市布兰代斯大学Volen国家复杂系统中心 期刊&#xff1a; F1000Research 引用量&#xff1a;63 这篇论文主要关注神经回路中的动力系统和吸引子。作者指出神经回路…

PLM系统功能、彩虹PLM系统功能、产品数据管理系统

彩虹PLM系统的功能 产品数据管理 产品数据管理是 PLM 系统的核心功能之一&#xff0c;它主要包括以下几个方面&#xff1a; &#xff08;1&#xff09;数据存储&#xff1a;将产品的设计数据&#xff08;如 CAD 模型、图纸、BOM 等&#xff09;存储在统一的数据库中&#xf…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-7 LQR控制器 Linear Quadratic Regulator

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-7 LQR控制器 Linear Quadratic Regulator 线性控制器设计-轨迹跟踪&#xff08;Fellow a Desired Path&#xff09;

openWrt将插件安装到USB外接硬盘上

问题描述&#xff1a; 陆由器的闪存空间不够&#xff0c;而陆由器有一个usb接口&#xff0c;可以外接硬盘&#xff0c;可以将插件安装在外接硬盘上&#xff0c;就再也不用担心陆由器的空间不够了&#xff1b; 解决方案&#xff1a; 查看USB目录&#xff0c;为 mnt/sdb1 利用…

py连接sqlserver数据库报错问题处理。20009

报错 pymssql模块连接sqlserver出现如下错误&#xff1a; pymssql._pymssql.OperationalError) (20009, bDB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (passwordlocalhost)\n) 解决办法&#xff1a; 打…

chromedriver 114以后版本下载地址

谷歌浏览器版本经常会升级&#xff0c;chromedriver 也得下载匹配的版本 chromedriver 114以前版本下载地址https://registry.npmmirror.com/binary.html?pathchromedriver/ 找到匹配浏览器版本 查看自己浏览器版本号v120.0 v120.0版本chromedriver下载地址https://google…

Redis中的Java客户端

一、Jedis Jedis是一个Java实现的Redis客户端连接工具。 Jedis使用非常简单&#xff0c;直接引入依赖。基于默认参数的Jedis连接池&#xff0c;初始化连接池类&#xff08;使用默认连接池参数&#xff09;JedisPool&#xff0c;获取一个Jedis连接Jedis jedisjp.getResource()…

亿胜盈科HT4822 160mW免输出电容立体声耳机放大器

HT4822是一款无需输出隔直电容的立体声耳机放大器。支持差分和单端的模拟信号输入。 在3.6V供电下&#xff0c;THDN 1%&#xff0c;32ohm负载时能提供80mW的输出。其具有低至0.007%的THDN。 HT4822能在2.5V-6.0V电源条件下工作&#xff0c;具有过热保护和欠压保护等功能。 …