Header
Header

Blog Archives

spark学习之combineByKey函数

  在数据分析中,处理Key,V alue的Pair数据是极为常见的场景,例如我们可以针对这样的数据进行分组、聚合或者将两个包含Pair数据的RDD根据key进行join。从函数的抽象层面看,这些操作具有共同的特征,都是将类型为RDD[(K,V)]的数据处理为RDD[(K,C)]。这里的V和C可以是相同类型,也可以是不同类型。这种数据处理操作并非单纯的对Pair的value进行map,而是针对不同的key值对原有的value进行联合(Combine)。因而,不仅类型可能不同,元素个数也可能不同。Spark为此提供了一个高度抽象的操作combineByKey。该方法的定义如下所示:阅读更多

Kafka与Spark Streaming整合总结

Spark代码库中的 KafkaWordCount 对于我们来说是个非常好的起点,但是这里仍然存在一些开放式问题。阅读更多

Spark操作数据库(Hbase+Mysql)踩过的坑总结

在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值。最近一个实时消费者处理任务,在使用spark streaming进行实时的数据流处理时,我需要将计算好的数据更新到hbase和mysql中,所以本文对spark操作hbase和mysql的内容进行总结,并且对自己踩到的一些坑进行记录。阅读更多

Spark Core核心编程之广播变量剖析

如果深入思考spark的分布式集群工作过程,就会发现有一些问题是分布式多节点需要考虑解决的。如一些变量在集群节点之间的拷贝。如我们在应用程序中编写代码,实际运行时候是将相关的代码分发个各节点进行运行,在spark中application应用程序向spark集群提交请求,申请相关运算资源;spark master节点分配好相关节点运算资源之后,在work节点启动相关的excutor以task线程来处理application中的计算任务。在一般情况下excutor中task进程中运行时所涉及的变量是独立的互不干扰的,这样就需要每一个task通过网络拷贝application中定义的相关变量(如下图绿色所示意的过程)。阅读更多