<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[风中一叶]]></title><description><![CDATA[专注于数据技术及其应用]]></description><link>https://blog.youkuaiyun.com/gl_windhome</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gl_windhome]]></copyright><item><title><![CDATA[Flink面试_002、operator state 和 keyed state 两者的区别？最大并行度和这两种 state 的关系？]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/123290406</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/123290406</guid><author>gl_windhome</author><pubDate>Sat, 05 Mar 2022 10:09:26 +0800</pubDate><description><![CDATA[举个例子，当用户停止任务、更新代码逻辑并且改变任务并发度时，两种 state 都是怎样进行恢复的

1. 区分 operator-state 和 keyed-state 的方式
a. operator-state：
 1. 状态适用算子：所有算子都可以使用 operator-state，没有限制。
 2. 如果需要使用 operator-state，需要实现 CheckpointedFunction 或 ListCheckpointed 接口
 3. DataStream API 中，operato...]]></description><category></category></item><item><title><![CDATA[Flink面试_001、你们公司是通过什么样的监控及保障手段来保障实时指标的质量？比如事前事中事后是怎么做的？]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/123290307</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/123290307</guid><author>gl_windhome</author><pubDate>Sat, 05 Mar 2022 10:05:34 +0800</pubDate><description><![CDATA[1. 事前：
a. 任务层面：根据峰值流量进行压力测试，并且留一定 buffer，用于事前保障任务在资源层面没有瓶颈
b. 指标层面：根据业务要求，上线实时指标前进行相同口径的实时、离线指标的验数
2. 事中：
a. 任务层面：贴源层监控 kafka 堆积延迟等报警检测手段，用于事中及时发现问题。比如的普罗米修斯监控 lag 时长
b. 指标层面：根据指标特点进行实时指标同环比对比监控、实时离线指标结果对比监控。这里的监控算法可以是阈值、时序异常算法等。检测到波动过大就报警。比如最简单的方式是可以通...]]></description><category></category></item><item><title><![CDATA[MPP架构]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/113789619</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/113789619</guid><author>gl_windhome</author><pubDate>Thu, 11 Feb 2021 12:34:29 +0800</pubDate><description><![CDATA[什么是MPP架构

MPP (Massively Parallel Processing)，即大规模并行处理。

并行处理：

  在数据库集群中，首先每个节点都有独立的磁盘存储系统和内存系统，其次业务数据根据数据库模型和应用特点划分到各个节点上，MPP是将任务并行的分散到多个服务器和节点上，在每个节点上计算完成后，将各自部分的结果汇总在一起得到最终的结果。

大规模：

  每台数据节点通过专用网络或者商业通用网络互相连接，彼此协同计算，作为整体提供数据库服务。整个集群称为非共享数据库集群，非共享...]]></description><category></category></item><item><title><![CDATA[1.1、Pyspark模块介绍.]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/84351147</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/84351147</guid><author>gl_windhome</author><pubDate>Fri, 23 Nov 2018 00:05:29 +0800</pubDate><description><![CDATA[pyspark是Spark的python API，提供了使用python编写并提交大数据处理作业的接口。

在pyspark里大致分为5个主要的模块

1. pyspark模块，这个模块四最基础的模块，里面实现了最基础的编写Spark作业的API。这个模块里面有以下内容：

Sparkcontext:它是编写Spark程序的主入口

RDD：分布式弹性数据集，是Spark内部中最重要的抽象

Br...]]></description><category></category></item><item><title><![CDATA[Spark与Pandas中DataFrame的详细对比]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83877038</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83877038</guid><author>gl_windhome</author><pubDate>Fri, 09 Nov 2018 04:36:02 +0800</pubDate><description><![CDATA[ 

 
			Pandas
			Spark
		工作方式
			单机single machine tool，没有并行机制parallelism
			不支持Hadoop，处理大量数据有瓶颈
			分布式并行计算框架，内建并行机制parallelism，所有的数据和操作自动并行分布在各个集群结点上。以处理in-memory数据的方式处理distributed数据。
			支持Hadoop，能处理...]]></description><category></category></item><item><title><![CDATA[18.弄懂生成器节约内存一边计算一边生成]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83875550</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83875550</guid><author>gl_windhome</author><pubDate>Fri, 09 Nov 2018 04:10:52 +0800</pubDate><description><![CDATA[ 

1.使用列表生成式可以方便快捷的生成列表，但是若生成一个很大的列表，势必会占用大量的内容。那我们是否能在计算的过程中，一边计算一边生成喃？答案是肯定的，我们使用生成器generator。

 

2.生成器的创建很简单，最简单的一种是把生成式的[]替换成()

a= [x*x for x in range(10)]
print(type(a))
b= (x*x for x in range(...]]></description><category></category></item><item><title><![CDATA[16.学会列表生成式，列表生成不再难]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83873129</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83873129</guid><author>gl_windhome</author><pubDate>Fri, 09 Nov 2018 03:30:24 +0800</pubDate><description><![CDATA[1.我们可以使用高效的列表生成式生成列表。

 

2.加入我们有一个已知的列表，要将列表中的每一个元素乘以2生成新的列表，老办法可能就得写个for循环。但是可以使用列表生成式高效的生成

list1=list(range(1,20,2))print(list1)
list2=[i*2 for i in list1]print(list2)

[1, 3, 5, 7, 9, 11, 13, 15,...]]></description><category></category></item><item><title><![CDATA[2 、SparkSQL编程入口SparkSession]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83718460</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83718460</guid><author>gl_windhome</author><pubDate>Sun, 04 Nov 2018 18:41:41 +0800</pubDate><description><![CDATA[1.要编写SparkSQL程序，必须通SparkSession对象

pyspark.sql.SparkSession(sparkContext, jsparkSession=None)

在spark1.x之前的版本中，SparkSQL程序的编程入口是

pyspark.sql.SQLContext(sparkContext, sparkSession=None, jsqlContext=Non...]]></description><category></category></item><item><title><![CDATA[1、SparkSQL模块介绍]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83689849</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83689849</guid><author>gl_windhome</author><pubDate>Sat, 03 Nov 2018 19:21:26 +0800</pubDate><description><![CDATA[1.SparkSQL是Spark的四大组件之一，也是在Spark数据处理中用得最多的组件。SparkSQL在SparkCore的基础上对外提供了SQL接口，可以让熟悉SQL的技术人员快速上手。其编程接口为SparkSession。


2.SparkSQL所有的内容位于pyspark.sql这个模块下，包含了SparkSession、Column、Row等众多的核心内容。SparkSQL是面向结构...]]></description><category></category></item><item><title><![CDATA[15.可迭代数据的克星]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83662693</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83662693</guid><author>gl_windhome</author><pubDate>Fri, 02 Nov 2018 22:48:26 +0800</pubDate><description><![CDATA[1.我们可以使用python内置的for...in语句迭代所有可迭代的集合人，例如迭代list、tuple、dict、set等

2. 如何查看一个对象是否可以迭代。我们可以使用collection模块的Iterable类型来判断。


from collections import Iterable

list1=list(range(10))

tuple1=tuple(range(10))
...]]></description><category></category></item><item><title><![CDATA[14.外科手术刀之集合切片]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83662687</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83662687</guid><author>gl_windhome</author><pubDate>Fri, 02 Nov 2018 22:47:32 +0800</pubDate><description><![CDATA[1.对集合list或tuple部分元素的操作是非常常见的操作，我们固然可以通过例如索引、循环等方式获得集合中的元素，但是显得非常繁琐。python为我们提供了更加简洁的方式——切片


2.切片的使用方式是：startIndex:endIndex:step

list1= list(range(100))

print(list1[23:40])

[23, 24, 25, 26, 27, 28,...]]></description><category></category></item><item><title><![CDATA[13.简单明了的递归函数]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83662678</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83662678</guid><author>gl_windhome</author><pubDate>Fri, 02 Nov 2018 22:45:59 +0800</pubDate><description><![CDATA[1.递归函数：如果在一个函数的内部调用本身，就形成一个递归函数。

2.使用递归函数需要注意 堆栈溢出，在计算机内部，递归是通过Stack这种数据结构实现的。每调用一次函数，增加一层栈帧，每return一次减少一次栈帧。

3.理论上递归调用都可以使用循环来替代，但是循环没有递归简洁明了。

4.用递归思想计算阶乘。


def factorial(n):

    if n==1:

     ...]]></description><category></category></item><item><title><![CDATA[12.多变的函数参数]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83662644</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83662644</guid><author>gl_windhome</author><pubDate>Fri, 02 Nov 2018 22:41:32 +0800</pubDate><description><![CDATA[1.定义函数的时候，吧函数的参数和参数的位置确定下来，加上函数体及return返回值，函数定义就完成了。函数内部复杂的逻辑被封装起来，调用者只需要知道需要传哪些参数，产生什么返回值就可以了。

2.python定义函数参数的灵活性非常大，有必选参数、默认参数、可变参数、关键字参数、参数组合等形式出现

3.位置参数：按照位置排列好的参数

4.默认参数：函数的某一个参数比较固定，我们可以为其设置默...]]></description><category></category></item><item><title><![CDATA[11.自己说了算，定义自己的函数]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83662626</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83662626</guid><author>gl_windhome</author><pubDate>Fri, 02 Nov 2018 22:39:46 +0800</pubDate><description><![CDATA[1.python中使用def定义函数，函数定义格式为：

def 函数名(参数列表):

代码块

return 返回值

2.如果没有return语句，函数也会有返回值，返回None

3.若要从其他py文件中引用对应的方法，需要使用from语句，具体用法如下：

from 文件名（不加.py） import 函数名

4.空函数（钩子函数）：什么也不做的函数。在函数代码块中使用pass，实际上...]]></description><category></category></item><item><title><![CDATA[Pyspark开发环境搭建]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83629560</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83629560</guid><author>gl_windhome</author><pubDate>Fri, 02 Nov 2018 00:55:11 +0800</pubDate><description><![CDATA[快速搭建Pyspark开发环境，方便代码编写和调试~~

1、下载并安装JDK

2、下载并安装Anacadon3

3、下载hadoop

4、下载winutils.exe并放在hadoop\bin目录下

5 、pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark安装pyspark和py4j.

6、Pycharm...]]></description><category></category></item><item><title><![CDATA[10.“捡现成”之函数调用]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83627070</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83627070</guid><author>gl_windhome</author><pubDate>Thu, 01 Nov 2018 21:08:45 +0800</pubDate><description><![CDATA[1.函数是一种基本规律的抽象，可重用。例如说圆面积、正方形边长，椭圆面积等。这些被发现的公式或定理或规律被固化下来，我们在遇到的时候可以直接套用这些定义好的函数。

2.python内置了很多的函数，这些函数为我们省去了大量的工作

3.我们可以“捡现成”直接调用定义好的方法，而不必事必躬亲自己去实现

4.调用函数需要知道函数的名字，传入必要的参数。


list=[1,87,3,6,7]

p...]]></description><category></category></item><item><title><![CDATA[9.‘独一无二的’set]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83627030</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83627030</guid><author>gl_windhome</author><pubDate>Thu, 01 Nov 2018 21:06:34 +0800</pubDate><description><![CDATA[1.set中没有重复出现的元素，用于存储不重复的数据。重复的数据会被自动过滤掉

2.构建set需要传入一个list
set1 = set([1,2,3,5,'aa'])

print(type(set1))

print(set1)


&amp;lt;class 'set'&amp;gt;


{1, 2, 3, 5, 'aa'}
 
 
 
​

3.通过add方法向set集合中添加元素，但是相同的元素添加...]]></description><category></category></item><item><title><![CDATA[8.高效的dict]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83627006</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83627006</guid><author>gl_windhome</author><pubDate>Thu, 01 Nov 2018 21:04:55 +0800</pubDate><description><![CDATA[1.dict是Python内置的字典结构，类似于其它语言的map

2.dict的查询效率很高，类似于查找字典。根据key找到value存放的位置，然后直接访问value

3.python中的dict字典的创建以{}或dict()方法声明

4.向字典中追加数据，追加相同的key，后面的数据会覆盖之前的数据 ​

5.删除字典中的某个key对应的数据，使用pop ​

6.修改某个key对应的数...]]></description><category></category></item><item><title><![CDATA[7.集合遍历能手for&while]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83626973</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83626973</guid><author>gl_windhome</author><pubDate>Thu, 01 Nov 2018 21:02:34 +0800</pubDate><description><![CDATA[1.for遍历list和tuple


list1=[1,2,3,4,'a']

for data in list1:

    print(data)

tuple1=('a','b',3.14)

for data in tuple1:

    print(data)

1

2

3

4

a

a

b

3.14 ​

2.计算和


list=range(101)

sum=0

...]]></description><category></category></item><item><title><![CDATA[6.从不撒谎的条件判断]]></title><link>https://blog.youkuaiyun.com/gl_windhome/article/details/83626937</link><guid>https://blog.youkuaiyun.com/gl_windhome/article/details/83626937</guid><author>gl_windhome</author><pubDate>Thu, 01 Nov 2018 21:00:15 +0800</pubDate><description><![CDATA[1.计算机之所以强大的原因是因为内部能根据不同的条件作出判断，自动化的完成任务

2.在python语言里面使用if ... else 语句来进行条件判断

3.若条件为True,执行if：对应的代码块，否则执行else对应的代码块

4.只要条件非零值、非空字符串、非空list则判断为True

5.注意if ... else 后面的代码块用‘：’表示，‘：’后面是要执行的代码块

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