Spark使用体会

这一段时间我对Spark的几个组件进行了试用:

1)      Spark 核心组件

通过几个基本的动作(map、flatMap、group、filter、reduce)的组合,可以完成非常复杂的处理过程。

它颠覆了我之前的设计,整个开发过程显得非常地轻巧。Spark适合处理非结构化的文本数据。

 

2)      Spark SQL

对NoSQL数据提供了SQL接口。这个非常方便,比如可以从CSV或JSON数据中按SQL进行查询。

如果不用SQL接口,为得到同样的结果,我们需要对数据进行多次map和reduce。而用SQL接口,只需要一句代码就能达成。

 

3)      Spark Streaming

以行为单位对文本数据进行处理。

所以它要求每一行数据都是一个相对独立的单元。因此像aix nmon那样的数据文件是不符合要求的。

在使用Spark Streaming时,需要设定Job的时间间隔。实际上它是把数据按时间进行了分片,一个Job可能拿到一行或多行数据。因为每一行都是独立单位,不存在关联关系,所以由不同的job来处理的话,不会存在问题。

 

在使用Spark Streaming时,特别要注意,它要求必须要有两个以上的工作线程(分别处理数据的接收和处理),否则程序只会接收数据,不做处理。刚开始没有注意看官网文档,我在这上面折腾了不少时间。

 

Spark相比Hadoop而言,确实是一个不错的框架。Spark是一个灵活的运算框架,适合做批次处理、工作流、交互式分析、流量处理等不同类型的应用,因此Spark也可以成为一个用途广泛的运算引擎,并在未来取代Map/Reduce的地位

最关键的是它上手比较快。

 

不过也有评论说Spark存在一些问题:

■稳定性方面,由于代码质量问题,Spark长时间运行会经常出错,在架构方面,由于大量数据被缓存在RAM中,Java回收垃圾缓慢的情况严重,导致Spark性能不稳定,在复杂场景中SQL的性能甚至不如现有的Map/Reduce。

 

■不能处理大数据,单独机器处理数据过大,或者由于数据出现问题导致中间结果超过RAM的大小时,常常出现RAM空间不足或无法得出结果。然而,Map/Reduce运算框架可以处理大数据,在这方面,Spark不如Map/Reduce运算框架有效。

 

■不能支持复杂的SQL统计;目前Spark支持的SQL语法完整程度还不能应用在复杂数据分析中。

 

■在可管理性方面,SparkYARN的结合不完善,这就为使用过程中埋下隐忧,容易出现各种难题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值