启动后台服务: [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.

[CDH] New project for ML pipeline的更多相关文章

  1. 使用spark ml pipeline进行机器学习

    一.关于spark ml pipeline与机器学习 一个典型的机器学习构建包含若干个过程 1.源数据ETL 2.数据预处理 3.特征选取 4.模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的 ...

  2. spark ML pipeline 学习

    一.pipeline 一个典型的机器学习过程从数据收集开始,要经历多个步骤,才能得到需要的输出.这非常类似于流水线式工作,即通常会包含源数据ETL(抽取.转化.加载),数据预处理,指标提取,模型训练与 ...

  3. Spark ML Pipeline简介

    Spark ML Pipeline基于DataFrame构建了一套High-level API,我们可以使用MLPipeline构建机器学习应用,它能够将一个机器学习应用的多个处理过程组织起来,通过在 ...

  4. spark ml pipeline构建机器学习任务

    一.关于spark ml pipeline与机器学习一个典型的机器学习构建包含若干个过程 1.源数据ETL 2.数据预处理 3.特征选取 4.模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的流 ...

  5. 使用 ML Pipeline 构建机器学习工作流

    http://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice5/

  6. Spark.ML之PipeLine学习笔记

    地址: http://spark.apache.org/docs/2.0.0/ml-pipeline.html   Spark PipeLine 是基于DataFrames的高层的API,可以方便用户 ...

  7. ML Pipelines管道

    ML Pipelines管道 In this section, we introduce the concept of ML Pipelines. ML Pipelines provide a uni ...

  8. Spark ML机器学习

    Spark提供了常用机器学习算法的实现, 封装于spark.ml和spark.mllib中. spark.mllib是基于RDD的机器学习库, spark.ml是基于DataFrame的机器学习库. ...

  9. Spark的MLlib和ML库的区别

    机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.其目标是使实际的机器学习可扩展和容易.在高层次上,它提供了如下工具: ML算法:通用学习算法,如分类,回归,聚类和协同过滤 特 ...

随机推荐

  1. Hadoop_12_Hadoop 中的RPC框架演示

    Hadoop中自己提供了一个RPC的框架.集群中各节点的通讯都使用了那个框架 1.服务端 1.1.业务接口:ClientNamenodeProtocol package cn.bigdata.hdfs ...

  2. Mac下用命令行压缩和解压rar文件的方法(转)

    废话不多说,直接进入主题 第一步:下载RAR工具包或https://www.rarlab.com/download.htm,根据自己需要下载相对应的版本 第二步:解压对应的压在的压缩包rarosx-5 ...

  3. 构建之法第二次作业【使用git和Vs实现四则运算】

    [相关信息] Q A GIT地址 git地址 GIT用户名 Lin-000 学号后五位 62501 博客地址 博客地址 作业链接 此次作业链接 1.项目需求 程序接收一个命令行参数 n,然后随机产生 ...

  4. 灵活部署django缓存,并使用

    使用django内置的redis=============>pip3 install django-redisCACHES = { 'default':{ 'BACKEND':'django_r ...

  5. Fiddler 显示客户端请求时间,请求耗时,服务器地址

    # 效果图 打开 CustomRules.js (C:\Users\UsersName\Documents\Fiddler2\Scripts):打开 fiddler 时 windows 快捷键 -&g ...

  6. NodeList对象的特点

    nodeList对象的特点1,nodeList是一种类数组对象,用于保存一组有序的节点.2,通过方括号来访问nodeList的值,有item方法与length属性.3,它并不是Array的实例,没有数 ...

  7. 【leetcode】1296. Divide Array in Sets of K Consecutive Numbers

    题目如下: Given an array of integers nums and a positive integer k, find whether it's possible to divide ...

  8. Spring@PostConstruct和@PreDestroy注解详解

    @PostConstruct注解使用 @PostConstructApi使用说明 The PostConstruct annotation is used on a method that needs ...

  9. php+文件夹上传实例

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  10. printf:函数参数计算从右向左,从左向右?

    造冰箱的大熊猫@cnblogs 2019/8/3 1.问题 某天写了如下代码: unsigned char ReadByteFromFile ( FILE * fp ) { unsigned char ...