[CDH] New project for ML pipeline
启动后台服务: [CDH] Cloudera's Distribution including Apache Hadoop
这里只介绍一些基本的流程,具体操作还是需要实践代码。
一、开发环境配置
JDK安装
Ref: Ubuntu安装jdk8的两种方式
(base) hadoop@unsw-ThinkPad-T490:jvm$ java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) -Bit Server VM (build 25.231-b11, mixed mode) (base) hadoop@unsw-ThinkPad-T490:jvm$ javac -version
javac 1.8.0_231
然后,Project Structure --> SDKs --> 配置为新jdk。
Scala插件安装
Setting --> Plugins
Maven更新
"Error:(5, 37) java: 程序包org.apache.ibatis.annotations不存在"
不要使用IDE内嵌的Maven,因为IDE内嵌的版本不一定一致,而版本不一致很容易导致构建行为的不一致。
项目Maven版本号在哪里体现?如何更新呢?
Goto: 修改Idea默认的maven版本
Spring-boot依赖
IDEA Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/public/)
可能有用,也可能没用。改为Settings --> maven --> Work offline
二、Maven和包依赖
Ref: Maven 教程
1. Maven POM
POM ( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
2. 新建项目以及模块
New Project --> maven
New Module --> maven // 若干模块可以拖拉到统一的文件夹内,相应的配置文件会自动编辑好。
然后根据如下模块图,依次添加模块。
建立模板代码,web作为“入口”。
3. 模块 "配置" 文件
Spark相关的配置: pom.xml --> https://www.runoob.com/maven/maven-pom.html
(1) 基本要素样例
<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>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId> <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId> <!-- 版本号 -->
<version>1.0</version>
</project>
(2) 子模块"目录"
<?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>car-travel</groupId>
<artifactId>car-travel</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>car-travel-common</module>
</modules> </project>
(3) 子模块"内容"
<?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">
<parent>
<groupId>car-travel</groupId>
<artifactId>car-travel-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../car-travel-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>car-travel-spark</artifactId> <dependencies>
<!--spark 离线任务 核心依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
</dependency> <!--spark 实时任务 核心依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_${scala.binary.version}</artifactId>
<version>2.1.0</version>
</dependency> <!--spark streaming 和 kafka集成 的依赖配置-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
</dependency> <!--依赖本项目中的module开始-->
<dependency>
<groupId>car-travel</groupId>
<artifactId>car-travel-util</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies> </project>
(4) 包依赖
Ref: Maven 引入外部依赖
Ref: Maven添加外部依赖【Maven无能为力,无法自动下载时】
Ref: maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>2.0.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
<exclusion>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
</exclusion>
</exclusions>
</dependency>
(5) Maven右边栏依赖检测
/* implement */
三、"测试" 子模块
这里若是 "测试spark模块" 的话,需要安装scala,使该模块支持Scala语言。
Spark环境配置的测试代码样例。
package spark.examples import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} class WordCount { } object WordCount {
def main(args: Array[String]): Unit = {
//1.创建spark的配置对象
val sparkConf = new SparkConf().setAppName("SparkWordCount").setMaster("local");
//2.创建spark context的上下文
val sc = new SparkContext(sparkConf); //3.使用spark上下文的api接口textFile读取文件形成spark数据处理模型RDD
val linesRDD: RDD[String] = sc.textFile("C:\\work_space\\car-travel\\common\\car-travel-spark\\src\\test\\scala\\words")
//4.对RDD每一行行进行分割(使用空格分割)
val wordArrayRdd = linesRDD.map(_.split(" "))
//5.分割完成之后,我们做一下扁平化,把多维集合转化为一维集合
val wordsRDD = wordArrayRdd.flatMap(x => x)
//6.单词计数,出现一次计数一个1
// val wordCount = wordsRDD.map((_,1))
val wordCount = wordsRDD.map(word => {
(word,1)
}) //7.最关键的一步就是对单词的所有计数进行汇总
()
val restCount = wordCount.reduceByKey(_ + _) restCount.foreach(println(_))
restCount.checkpoint()
restCount.persist()
sc.stop();
}
}
End.
最新文章
- 移居 GitHub
- CSharpGL(2)设计和使用场景元素及常用接口
- web前端交互性易用性说明
- MVC中使用EF:排序,过滤,分页
- Spring MVC之cookies跟session 数据绑定
- syslog简介——系统日志写入API
- javaWeb学习笔记
- sql server 表连接
- CENTOS下Python 升级后YUM无法使用的解决办法
- [SQL基础教程] 3-1 对表进行聚合查询
- 正确使用String,StringBuffer,StringBuilder
- 如何才能通俗易懂的解释javascript里面的";闭包";?
- Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)
- sas 9.4 sid 64bit 到期时间210804 带有EM
- Concept Drift(概念漂移)
- Mysql性能优化二:索引优化
- The superclass ";javax.servlet.http.HttpServlet"; was not found on the Java Build
- ESXi安装实录
- vue-cli的webpack模板项目配置文件分析,配置信息详解
- atomic write pipe
热门文章
- textbox 输入值提示。。。(类似百度搜索)
- Vue介绍:vue项目搭建
- anaconda环境中---py2.7下安装tf1.0 + py3.5下安装tf1.5
- bat 读取 ini 文件
- [JLOI2009]神秘的生物——轮廓线DP
- freemodbus收藏学习网址
- MacOS使用zsh &; oh-my-zsh
- Visual Studio 2019 激活
- org.apache.commons.io.FilenameUtils 常用的方法
- Comet OJ - Contest #11 B 背包dp