摘要:
实际生产中,由于各种原因,导致事件创建时间与处理时间不一致,收集的规定对实时推荐有较大的影响。所以一般情况时选取创建时间,然后事先创建flink的时间窗口。但是问题来了,如何保证这个窗口的时间内所有事件都到齐了?这个时候就可以设置水位线(waterMark)。 概念:支持基于时间窗口操作,由于事件的 阅读全文
摘要:
Spark作业执行中,有一个步骤是给任务进行资源分配,实际上这些任务由一些任务管理器TaskSetManager负责管理,资源分配过程中,会先根据某种排序算法排好序,然后根据就近原则给任务进行资源分配。那么关于TaskSetManager的排序是根据哪个算法呢?现在就来介绍。 排序算法由两种调度策略 阅读全文
摘要:
从表Schema处理角度对比Hive和Parquet,两者主要的区别: Hive区分大小写,Parquet不区分大小写;Hive允许所有的列为空,而Parquet不允许所有列为空;基于上述两点区别,在进行Hive metastore Parquet转换为SpqrkSql Parquet时,需要将两者 阅读全文
摘要:
自定义强类型聚合函数跟自定义无类型聚合函数的操作类似,相对的,实现自定义强类型聚合函数则要继承org.apache.spark.sql.expressions.Aggregator。强类型的优点在于:其内部与特定数据集紧密结合,增强了紧密型、安全性,但由于其紧凑的特性,降低了适用性。 准备emplo 阅读全文
摘要:
准备数据: 一、定义自定义无类型聚合函数 想要自定义无类型聚合函数,那必须得继承org.spark.sql.expressions.UserDefinedAggregateFunction,然后重写父类得抽象变量和成员方法。 二、使用自定义无类型聚合函数 输出结果: 阅读全文
摘要:
随着Spark1.4.x的更新,Spark提供更高阶的对象DataFrame,提供了比RDD更丰富的API操作,同时也支持RDD转DataFrame(下面简称“DF”),但是要注意,不是任意类型对象组成的RDD都可以转换成DF,,只有当组成RDD[T]的每一个T对象内部具有鲜明的字段结构时,才能隐式 阅读全文
摘要:
对于Executor的计算结果,会根据结果的大小使用不同的处理策略: 任务执行完成之后,TaskRunner将任务的执行结果发送给DriverEndpoint,DriverEndpoint接收到信息后,交给TaskSchedulerImpl的statusUpdate方法进行处理,该方法根据不同的任务 阅读全文