<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[longwenyanlan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/longwenyanlan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; longwenyanlan]]></copyright><item><title><![CDATA[Spark的join聚合操作]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/103879899</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/103879899</guid><author>longwenyanlan</author><pubDate>Tue, 07 Jan 2020 18:51:31 +0800</pubDate><description><![CDATA[使用场景:


join必须作用于 RDD[K,V] 类型的数据,相当于SQL中的内关联join，只返回两个RDD根据K可以关联上的结果
在类型为（K,V)和（K,W)类型的数据集上调用时，返回一个相同key对应的所有元素对在一起的(K, (V, W))数据集,只返回根据key可以关联上的数据，关联不上的， 直接舍去了
示例:
[K,V] join[K,W] 返回值类型[K,(V,W)]
...]]></description><category></category></item><item><title><![CDATA[Spark中两个可以改变分区的算子:repartition coalesce]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/103877140</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/103877140</guid><author>longwenyanlan</author><pubDate>Tue, 07 Jan 2020 16:36:06 +0800</pubDate><description><![CDATA[两个可以改变分区的算子





举例:  repartition(10) = coalesce(10,true)

参数: shuffle: 数据是否重新分发。 简单理解： 一个分区的数据是否会被分配到多个分区中。

repartition： 重新分区 ，数据必须要进行shuffle。

coalesce： 常用于 减少分区 ,合并分区。 数据不会进行shuffle。

如何使用：

...]]></description><category></category></item><item><title><![CDATA[Spark实现列转行------求平均温度案例]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/103876852</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/103876852</guid><author>longwenyanlan</author><pubDate>Tue, 07 Jan 2020 16:24:14 +0800</pubDate><description><![CDATA[import org.apache.spark.{SparkConf, SparkContext}

object MySparkUtil {
  //获取本地的SparkContext
  def apply(appName: String): SparkContext = {
    val conf = new SparkConf()
      .setAppName(appName)
...]]></description><category></category></item><item><title><![CDATA[Spark之WordCount 在本地模式下运行]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/103874915</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/103874915</guid><author>longwenyanlan</author><pubDate>Tue, 07 Jan 2020 15:07:29 +0800</pubDate><description><![CDATA[在本地模式下运行，必须设置 Master  AppName

local模式下，不会有监控界面出现：


object WordCountLocal {
  def main(args: Array[String]): Unit = {
    if (args.length != 2) {
      println(
        """
          |cn.uhome.spark...]]></description><category></category></item><item><title><![CDATA[Spark之WordCount,提交到集群中运行]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/103874799</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/103874799</guid><author>longwenyanlan</author><pubDate>Tue, 07 Jan 2020 15:05:16 +0800</pubDate><description><![CDATA[在idea中写好程序，提交到集群中运行
object WordCount {
  def main(args: Array[String]): Unit = {

    if (args.length != 2) {
      println(
        """
          |cn.uhome.spark01.WordCount  &lt;input&gt; &lt;output...]]></description><category></category></item><item><title><![CDATA[设计模式之禅:单例模式]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/103870214</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/103870214</guid><author>longwenyanlan</author><pubDate>Tue, 07 Jan 2020 11:22:45 +0800</pubDate><description><![CDATA[单例模式（Singleton Pattern）是一个比较简单的模式，其定义如下：
Ensure a class has only one instance, and provide a global point of access to it.（确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例。）

单例模式的通用类图:



Singleton类称为单例类，通过使用private...]]></description><category></category></item><item><title><![CDATA[稀疏 sparsearray 数组-----编写五子棋程序中，存盘退出和续上盘的功能]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/89696550</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/89696550</guid><author>longwenyanlan</author><pubDate>Tue, 30 Apr 2019 01:00:42 +0800</pubDate><description><![CDATA[import scala.collection.mutable.ArrayBuffer

/**
  * 稀疏 sparsearray 数组
  * 编写的五子棋程序中，有存盘退出和续上盘的功能。
  * 分析问题:
  * 因为该二维数组的很多值是默认值 0, 因此记录了很多没有意义的数据.-&gt;稀疏数组
  *
  * 基本介绍
  * 当一个数组中大部分元素为０，或者为同一个值的数组时...]]></description><category></category></item><item><title><![CDATA[SpringBoot集成kafka以及遇到的问题]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/86682465</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/86682465</guid><author>longwenyanlan</author><pubDate>Mon, 28 Jan 2019 20:57:21 +0800</pubDate><description><![CDATA[版本介绍:

Springboot:1.5.3

kafka:kafka_2.10-0.10.2.1

配置文件:


server.port=6097
spring.application.name=DsInfoservice

#============== kafka ===================
kafka.consumer.zookeeper.connect=192.168.x...]]></description><category></category></item><item><title><![CDATA[Spark 从 Kafka 读数并发问题]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/85228149</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/85228149</guid><author>longwenyanlan</author><pubDate>Mon, 24 Dec 2018 01:05:03 +0800</pubDate><description><![CDATA[       经常使用 Apache Spark 从 Kafka 读数的同学肯定会遇到这样的问题：某些 Spark 分区已经处理完数据了，另一部分分区还在处理数据，从而导致这个批次的作业总消耗时间变长；甚至导致 Spark 作业无法及时消费 Kafka 中的数据。为了简便起见，本文讨论的 Spark Direct 方式读取 Kafka 中的数据，这种情况下 Spark RDD 中分区和 Kafka...]]></description><category></category></item><item><title><![CDATA[大数据项目实战之调优思路]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/85217916</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/85217916</guid><author>longwenyanlan</author><pubDate>Sat, 22 Dec 2018 21:06:00 +0800</pubDate><description><![CDATA[session聚合统计之重构实现思路

session聚合统计（统计出访问时长和访问步长，各个区间的session数量占总session数量的比例）的传统思路:

1、actionRDD，映射成&amp;lt;sessionid,Row&amp;gt;的格式
2、按sessionid聚合，计算出每个session的访问时长和访问步长，生成一个新的RDD
3、遍历新生成的RDD，将每个session的访问时长和访问...]]></description><category></category></item><item><title><![CDATA[大数据项目实战之十五:15.session聚合统计之自定义Accumulator]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/85152308</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/85152308</guid><author>longwenyanlan</author><pubDate>Fri, 21 Dec 2018 01:28:44 +0800</pubDate><description><![CDATA[Accumulator传统的实现方式,有如下缺点:

1.在写后面的累加代码的时候，比如找到了一个4s~6s的区间的session，但是在代码里面不小心累加到7s~9s里面去了；

2.当后期项目出现一些逻辑上的变更，比如说，session数量的计算逻辑，要改变，就得更改所有Accumulator对应的代码；或者说，又要增加几个范围，那么又要增加多个Accumulator，并且修改对应的累加代码；...]]></description><category></category></item><item><title><![CDATA[全局topN问题]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84997010</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84997010</guid><author>longwenyanlan</author><pubDate>Fri, 14 Dec 2018 00:25:05 +0800</pubDate><description><![CDATA[
import org.apache.spark.{SparkConf, SparkContext}

object FavTeacher {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
      .setAppName(&quot;FavTeacher&quot;)
      .setMaster(&quot;local...]]></description><category></category></item><item><title><![CDATA[hive实现累计报表详解]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84996908</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84996908</guid><author>longwenyanlan</author><pubDate>Fri, 14 Dec 2018 00:13:36 +0800</pubDate><description><![CDATA[业务场景:

有如下访客每次金额统计表 t_access_times


			访客
			
			
			月份
			
			
			金额
			
		
			A
			
			
			2015-01
			
			
			5
			
		
			A
			
			
			2015-01
			
			
			15
			
		
			B
			
			
			2015-01
			
			
	...]]></description><category></category></item><item><title><![CDATA[Spark性能调优:调节并行度]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84932039</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84932039</guid><author>longwenyanlan</author><pubDate>Sun, 09 Dec 2018 21:47:09 +0800</pubDate><description><![CDATA[

并行度：其实就是Spark作业中，各个stage的task数量，也就代表了Spark作业的在各个阶段（stage）的并行度。

如果不调节并行度，导致并行度过低，会怎么样？

假设，现在已经在spark-submit脚本里面，给我们的spark作业分配了足够多的资源，比如50个executor，每个executor有10G内存，每个executor有3个cpu core。基本已经达到了集群或者...]]></description><category></category></item><item><title><![CDATA[Spark性能调优:如何分配更多资源]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84931826</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84931826</guid><author>longwenyanlan</author><pubDate>Sun, 09 Dec 2018 20:53:15 +0800</pubDate><description><![CDATA[       性能调优的王道，就是增加和分配更多的资源，性能和速度上的提升，是显而易见的；基本上，在一定范围之内，增加资源与性能的提升，是成正比的；写完了一个复杂的spark作业之后，进行性能调优的时候，首先第一步，就是要来调节最优的资源配置；在这个基础之上，如果说你的spark作业，能够分配的资源达到了你的能力范围的顶端之后，无法再分配更多的资源了，公司资源有限；那么才是考虑去做其他的调优工作。...]]></description><category></category></item><item><title><![CDATA[RDD分区概述]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84868386</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84868386</guid><author>longwenyanlan</author><pubDate>Fri, 07 Dec 2018 00:56:55 +0800</pubDate><description><![CDATA[1.RDD是一个基本的抽象，操作RDD就像操作一个本地集合一样，降低了编程的复杂度
RDD里面并不存储真正要计算的数据,你对RDD进行操作,他会在Driver端转换成task,下发到Executor计算分散在多台集群上的数据

RDD的算子分为两类，一类是Transformation（lazy），一类是Action（触发任务执行）
RDD不存真正要计算的数据，而是记录了RDD的转换关系（调用了什么...]]></description><category></category></item><item><title><![CDATA[大数据项目实战之十四:14.按筛选参数对session粒度聚合数据进行过滤]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84867197</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84867197</guid><author>longwenyanlan</author><pubDate>Thu, 06 Dec 2018 23:39:20 +0800</pubDate><description><![CDATA[
import com.alibaba.fastjson.JSONObject;
import com.ibeifeng.sparkproject.conf.ConfigurationManager;
import com.ibeifeng.sparkproject.constant.Constants;
import com.ibeifeng.sparkproject.dao.ITaskDAO;...]]></description><category></category></item><item><title><![CDATA[Hadoop中需要哪些配置文件，其作用是什么]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84800117</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84800117</guid><author>longwenyanlan</author><pubDate>Tue, 04 Dec 2018 22:30:47 +0800</pubDate><description><![CDATA[1）core-site.xml：

(1)fs.defaultFS:hdfs://cluster1(域名)，这里的值指的是默认的HDFS路径 。

(2)hadoop.tmp.dir:/export/data/hadoop_tmp,这里的路径默认是NameNode、DataNode、secondaryNamenode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。

(3)ha.zo...]]></description><category></category></item><item><title><![CDATA[正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程，它们的作用分别是什么?]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84800083</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84800083</guid><author>longwenyanlan</author><pubDate>Tue, 04 Dec 2018 22:28:57 +0800</pubDate><description><![CDATA[1）NameNode它是hadoop中的主服务器，管理文件系统名称空间和对集群中存储的文件的访问，保存有metadate。

2）SecondaryNameNode它不是namenode的冗余守护进程，而是提供周期检查点和清理任务。帮助NN合并editslog，减少NN启动时间。

3）DataNode它负责管理连接到节点的存储（一个集群中可以有多个节点）。每个存储数据的节点运行一个datanod...]]></description><category></category></item><item><title><![CDATA[Spark入门之JavaLambdaWordCount]]></title><link>https://blog.youkuaiyun.com/longwenyanlan/article/details/84788922</link><guid>https://blog.youkuaiyun.com/longwenyanlan/article/details/84788922</guid><author>longwenyanlan</author><pubDate>Tue, 04 Dec 2018 15:07:47 +0800</pubDate><description><![CDATA[
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;

imp...]]></description><category></category></item></channel></rss>