关于Spark

Spark 的使用场景和资源

这里有一些关于 Spark 的不同使用场景和资源:

什么情况下不需要使用 Spark

Spark 就是为处理单台机子无法承载的数据集而生的。但如果你只是处理小数据,那就不需要使用 Spark 了。如果你的数据可以装到一台电脑里,那你可以有很多别的选择去处理数据,比如:

  • AWK - 一个处理文档数据的命令行工具
  • R - 一个统计计算的编程语言和程序
  • Python PyData Stack 一个包括 pandas matplotlib numpy 和 scikit-learn 等库的编程语言

如果你的数据量比内存稍大一些,你还是可以在一台电脑使用 pandas 处理数据。Pandas 也可以分段读取数据。根据你的使用场景,你可以过滤数据和把相关的数据写到硬盘里。

如果数据已经存储到了关系数据库里如 MySQL 或者 Postgres, 你可以利用 SQL 语句来提取、过滤和汇总数据。如果你想同时使用 pandas 和SQL,你可以使用如 SQLAlchemy 这样的库, 它提供了一个抽象层,通过它可以使用Python表达式来操作 SQL 表。

最常用的 Python 机器学习库是 scikit-learn。它有许多算法,涵盖了分类、回归和聚类算法,以及预处理数据、微调模型参数和测试模型结果。但是,如果你想使用更复杂的算法 - 比如深度学习 - 你需要进一步研究 TensorFlow 或 PyTorch

Spark 的局限

Spark 也有一些局限。

Spark 数据流处理的延迟至少为500毫秒,因为它是将数据分成小批次来运行模拟流处理,而不是一次处理一条记录。有些原生的流处理工具,如 StormApex 或者 Flink ,可以降低此延迟值,可能更适合低延迟应用程序。Flink 和 Apex 也可用于批处理计算,因此,如果你已经将它们用于流处理,则无需在你的科技树里添加 Spark 了。

Spark 的另外一个局限是机器学习的算法。目前,Spark仅支持随输入数据大小线性扩展的算法。通常来讲,深度学习也用不了,尽管有许多项目将Spark与Tensorflow和其他深度学习工具集成在一起。

Hadoop vs Spark

Hadoop 的生态系统比起Spark 的生态系统要老一些。通常来讲,Hadoop MapReduce 要比 Spark 要慢,因为 Hadoop会把中间数据写到硬盘里。但是,许多大公司,如 Facebook 和 LinkedIn,很早就开始使用大数据并围绕 Hadoop 生态系统构建其基础架构。

虽然Spark非常适合迭代算法,但在进行简单计数时并没有比 Hadoop MapReduce的性能有太大提升。为小的性能提升而把遗留代码换成 Spark,特别是在很多已经投入生产的节点上,可能不值得。

Spark之外的存储和大数据处理

除了Spark之外,还有许多工具可用于处理和分析大型数据集。

有时,使用SQL强大的功能和简单的操作来处理大数据也是可以的。某些数据库,如NoSQL和NewSQ,就是为应对这种情况而新开发出来的。

你可能听说过更新的数据库存储系统 HBase 或者 Cassandra。还有分布式的SQL引擎如 Impala 和 Presto。许多技术的语法查询语法和 Python 以及 SQL类似,如果你熟悉 Python 和 SQL ,那么你对这些查询语法应该也比较熟悉了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值