当前位置: 首页 > news >正文

编写一个用scala写的spark程序从本地读取数据,写到本地

有些内容,其实是和这篇文章是重合的:
https://blog.csdn.net/lwprain/article/details/142336420
其实说到底还是需要配下hadoop的开发环境,核心还是:
1、添加环境变量 HADOOP_HOME,内容为:D:\java\hadoop-3.3.6
2、到项目https://github.com/cdarlint/winutils/tree/master/hadoop-3.3.6/bin中,下载:
hadoop.dll、winutils.exe
放到d:\java\hadoop-3.3.6\bin中。
3、将路径D:\java\hadoop-3.3.6\bin放到PATH中
这几条,具体遇到其他问题,可以参考原文章。

工程什么的都不说了,直接贴相关的内容吧
4、pom.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>groupId</groupId><artifactId>scala-spark01</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.12.20</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.5.6</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.3.6</version></dependency></dependencies><build><plugins><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>3.2.2</version><executions><execution><goals><goal>compile</goal><goal>testCompile</goal></goals></execution></executions><configuration><jvmArgs><!--                        <jvmArg>&#45;&#45;add-exports</jvmArg>--><!--                        <jvmArg>java.base/sun.nio.ch=ALL-UNNAMED</jvmArg>--><!--                        <jvmArg>&#45;&#45;add-opens</jvmArg>--><!--                        <jvmArg>java.base/sun.nio.ch=ALL-UNNAMED</jvmArg>--><!--                        <jvmArg>&#45;&#45;add-opens</jvmArg>--><!--                        <jvmArg>java.base/java.lang=ALL-UNNAMED</jvmArg>--></jvmArgs></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>org.rainpet.WordCount</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build></project>

5、主代码:

package org.rainpetimport org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object WordCount {def main(args: Array[String]): Unit = {val sparkConf=new SparkConf().setAppName("WordCount").setMaster("local[2]");//创建sparkConf,设置模式为本地模式,2个线程val sparkContext=new SparkContext(sparkConf)// 定义输出路径val outputPath = "file:///D:/java/wordcount_out"// 删除已存在的输出目录val hadoopConf = sparkContext.hadoopConfigurationval hdfs = org.apache.hadoop.fs.FileSystem.getLocal(hadoopConf)val outPath = new org.apache.hadoop.fs.Path(outputPath)if (hdfs.exists(outPath)) {hdfs.delete(outPath, true)}val data:RDD[String]=sparkContext.textFile("D:/java/workspace_gitee/cloud-compute-course-demo/scala-spark01/src/main/resources/word.txt")val words :RDD[String]=data.flatMap(_.split(" "))val wordAndOne:RDD[(String,Int)]=words.map(x=>(x,1))val wordAndCount:RDD[(String,Int)]=wordAndOne.reduceByKey(_+_)wordAndCount.saveAsTextFile(outputPath);//将结果保存到文件val result:Array[(String,Int)]=wordAndCount.collect()println(result.toBuffer)sparkContext.stop()}
}

6、环境:
scala:2.12.20
spark:3.5.6
hadoop:3.3.6
openjdk:1.8
在这里插入图片描述
运行结果:
在这里插入图片描述
word.txt:

hello world
hello tom
hello jerry
hi world
nice to meet you
nice to meet me
http://www.xdnf.cn/news/1408843.html

相关文章:

  • 【ArcGIS微课1000例】0150:如何根据地名获取经纬度坐标
  • openssl使用SM2进行数据加密和数据解密
  • 科普:requirements.txt 和 environment.yml
  • Labview使用modbus或S7与PLC通信
  • Machine Learning HW3 report:图像分类(Hongyi Lee)
  • 《深入剖析Kafka分布式消息队列架构奥秘》之Springboot集成Kafka
  • 中级统计师-统计实务-第四章 专业统计
  • 嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
  • 【重学MySQL】九十五、Linux 下 MySQL 大小写规则设置详解
  • CF每日3题(1500-1600)
  • 阿里云创建自己的博客,部署wordpress
  • 基于Matlab元胞自动机的强场电离过程模拟与ADK模型分析
  • Scikit-learn Python机器学习 - 数据集的划分
  • 网格图--Day03--网格图DFS--2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量
  • Cartographer中的gflag与lua文件
  • 【开题答辩全过程】以 基于Java的城市公交查询系统设计与实现为例,包含答辩的问题和答案
  • 记录测试环境hertzbeat压测cpu高,oom问题排查。jvm,mat,visulavm
  • 浏览器和 node 操作文件的 api 以及区别
  • GEE 实战:Landsat 5 月度 NDVI 数据插值填补(以 8 月为例)_后附完整代码
  • Python:如何批量下载CLMS NDVI V3数据集?
  • PyQt5 K线图实现与性能优化详解
  • 神州数码之FTP/TFTP 升级 篇
  • 深入解析Linux系统中的/etc/hosts文件
  • 在Windows的wsl中如何以root登录Ubuntu
  • OpenStack 02:使用 DevStack 单节点一体化部署
  • Kafka面试精讲 Day 3:Producer生产者原理与配置
  • Java提供高效后端支撑,Vue呈现直观交互界面,共同打造的MES管理系统,含完整可运行源码,实现生产计划、执行、追溯一站式管理,提升制造执行效率
  • isp图像处理--bayer Binning
  • isp 图像处理--DPC坏点矫正
  • 张柏芝亮相林家谦演唱会 再次演绎《任何天气》