Spark初学笔记(一)

Spark菜鸟笔记(一)

Apache Spark™是用于大规模数据处理的快速和通用引擎。(Apache Spark™ is a fast and general engine for large-scale data processing. )

Spark自带服务的端口

端口号描述
8080master的webUI,sparkwebUI的端口
7077提交任务的端口
8081worker的webUI的端口
18080historyServer的webUI的端口
4040application的webUI的端口

Spark生态圈(组件)

  1. Spark Core:Spark的核心组件,其操作的数据对象是RDD(弹性分布式数据集),类似MapReduce,进行离线计算。
  2. Spark SQL:Spark处理结构化数据的引擎,类似Hive,支持SQL。(是基于Catalyst引擎的交互式大数据SQL技术,使用SchemaRDD来操作SQL,比Shark支持更过的查询表达式。)
  3. Spark Streaming:Spark Streaming通过将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,进而实现大规模的流数据处理。类似Storm,进行流式计算,处理的是实时数据(流式数据)
  4. Spark MLlib(Machine Learning Library):一个可扩展的Spark机器学习库,MLlib目前支持4种常见的机器学习问题:二元分类、回归、聚类以及协同过滤,还包括一个底层的梯度下降优化基础算法。
  5. Spark Graphx:Spark生态系统中的图计算和并行图计算。

Spark的优点

  1. 运算快:Spark基于内存计算,Spark 比 Hadoop 快100倍。
  2. 通用性:Spark 提供了大量的库,包括SQL、DataFrames、MLlib、GraphX、Spark Streaming。
  3. 易用性:Spark 提供了80多个高级运算符。
  4. Spark是MapReduce的替代方案。
  5. 兼容HDFS、Hive。
  6. 可融入Hadoop的生态系统,以弥补MapReduce的不足。

Spark与 Hadoop的区别

  1. Spark基于内存计算,计算速度远超Hadoop。
  2. Spark只有计算,没有存储。
  3. Spark基于Scala语言、Hadoop用Java语言。

如何执行Spark任务

  1. Spark submit 提交Spark任务

     bin/spark-submit --master <master-url>     --class [CLASS_NAME]      <application-jar>    [application-arguments]
    
参数名格式参数说明
-masterMASTER_URL如spark://host:port, mesos://host:port, yarn, yarn-cluster,yarn-client, local
–classCLASS_NAME应用程序的主类
application-jarpath/to/examples.jarjar所在位置
[application-arguments]数字资源参数的调优,没有一个固定的值,需要根据自己的实际情况
–deploy-modeDEPLOY_MODEClient或者master,默认是client
–confPROP=VALUE固定的spark配置属性,默认是conf/spark-defaults.conf
  1. Spark shell:交互式的命令行
    —Spark Shell 工具:交互式命令行工具、作为一个Application运行。
    (1)本地模式 :bin/spark-shell (不连接到集群,在本地执行任务,类似Storm的本地模式)

    Spark context available as 'sc' (master = local[*], app id = local-1482744865947).
    

    (2)集群模式:bin/spark-shell --master spark://bigdata11:7077

    Spark context available as 'sc' (master = spark://bigdata11:7077, app id = app-20180209210815-0002).
    

    (3)Idea中开发Spark的任务

Spark对象

Spark context available as 'sc'  

Spark session available as 'spark' 
//在Spark 2.0后新提供一个统一的访问接口:Spark Core、Spark SQL、Spark Streaming
操作描述
.textFile(“hdfs://bigdata11:9000/input/data.txt”)通过sc对象读取HDFS的文件
.flatMap(_.split(" "))分词操作、压平
.map((_,1))每个单词记一次数
.saveAsTextFile()将文件存做本地Text文件
.reduceByKey(key, value)对相同key的数据进行处理,将value进行累加,最终每个key只保留一条记录。
.reduceByKey((a,b) => a+b)只保留求和之后的数据作为value

Spark推荐模型的分类

目前最为流行的两种方法是基于内容的过滤和协同过滤

基于内容的过滤

(*)利用物品的内容或是属性信息以及某种相似度定义,来求出与该物品类似的物品。这些属性值通常都是文本内容,比如标题、名称、标签及该物品的其他元数据。

协同过滤

)协同过滤仅依靠以往的行为,比如已有的评级或交易。其内在思想是相似度定义。
)其基本思路是用户会对物品进行显示或隐式的评级。过去表现出相似偏好的用户在未来的偏好也会类似。

数据驱动的机器学习系统的组成

  1. 数据获取与存储,
    机器学习流程的第一步 是获取训练模型所需的数据。获取数据后通常需将其存储起来。要存储的数据包括:原始数据、经过中间处理的数据,以及可用于生产系统的最终建模结果。

  2. 数据清理与转换
    大部分机器学习模型所处理的都是特征(feature)。特征通常是输入型变量所对应的可用于模型的数值表示。

  3. 模型训练与测试循环
    当数据已转换为可用于模型的形式,便可开始模型的训练和测试。在这阶段, 我们主要关注模型选择问题。这可以归结为对特定任务最优建模方法的选择,或是对特定模型最佳参数的选择问题。在训练数据集上运行模型并在测试数据集(即为评估模型而预留的数据,在训练阶段模型没接触过该数据)上测试其效果,这个过程般相对直接, 被称作交叉验证

  4. 模型测试
    经训练-测试循环找出最佳模型后,要让它得到可付诸实践的预测,还需将其部署到生产系统中。

  5. 预测

spark 迭代器(Iterator)

迭代器不是静止不动的,它是随着next()方法而移动的

  1. next()
    调用next()返回下一个元素
  2. hasNext()
    调用hasNext()用于检测是否还有下一个元素
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值