Apache Spark

Calcite技术研究

大兔子大兔子 提交于 2020-11-02 05:34:42
原文作者:王长春,来自平安银行零售大数据团队 概述 Apache Calcite是一个基础的软件框架,它提供了查询处理、查询优化以及查询语言支持的能力。很多流行的开源数据处理系统例如Apache Hive,Apache Storm,ApacheFlink,Druid等都采用了它。 下图是采用Apache Calcite的开源数据处理系统,以及Calcite能连接到的数据源。 大多数数据处理系统是使用Calcite来做SQL解析和查询优化。还有部分使用Avatica(Calcite的子项目)来构建自己的JDBC driver。还有部分使用Calcite来重写查询请求以使用物化视图。 最近十几年来,出现了很多专门的数据处理引擎。例如列式存储、流处理引擎、文档搜索引擎等等。这些引擎宣称他们在特殊方面能提供更高“性价比”的性能,并且宣称“one size fits all”范式的时代已经终结了。Spark、Storm、Flink、Elasticsearch、Druid等多种引擎的流行确实说明了这一点。 这些数据处理引擎都面临着一些共同但是难以解决的问题。 一是数据处理引擎都要做查询优化以及提供sql查询语言或者其他DSL查询语言。 二是使用者可能使用了多个专门的数据引擎,例如使用了ES、Spark、Druid.那么使用者很可能会有在异构数据源上支持查询以及查询优化的需求。 Apache

SCALA-DAY01

那年仲夏 提交于 2020-11-01 13:44:45
1 scala简介 面向对象和面向函数 静态类型提高效率 运行在JVM和JS上 特点 优雅 简洁 速度快 兼容HADOOP生态 spark是scala编写的 函数式编程有利于数据流式处理 2 scala环境搭建 2.1 环境变量配置 下载 windows环境 解压 --系统--高级设置--系统环境变量 配置SCALA_HOME linux环境 解压 配置 /etc/profile 2.2 IDEA搭建scala项目 2.2.1 安装scala插件 retstart 重启IDEA 2.2.2 new project // 1 object中的所有的内容默认是static object Demo1 { // 等同于java的main方法 程序的入口 def main(args: Array[String]): Unit = { // 打印数据 简洁 println("hello scala") } } 在scala中有class和object两种 object中的内容默认是static修饰的 , 静态的 ,所以main方法写在object中才能执行 3 数据类型 Any 类似于java中的Object 所有类的父类 Any AnyVal 数值 AnyRef 引用类有关 : 1 java的所有的类 2 scala的任意类 (scala类和集合类工具类) 在scala中所有的类型都是对象

敖丙8年经验读者,疫情期间面20家大厂总结

谁都会走 提交于 2020-11-01 07:20:36
本文来自一个8年大数据老兵的面试经历投稿,我完完整整的看了一遍,真的很细很细,疫情期间面试各种失败各种总结,最后拿到Offer实属不易,精神很值得大家学习 前言 我不是什么大牛,我只是一个有八年工作经验的互联网老兵,既没有非常亮眼的学历,也没有牛逼大厂的履历。 这个冬天,在孩子得病从急诊转住院的时候,我得到了年前将被优化的消息,作为家里唯一经济来源的我整个人蒙了,一时间茫然和无助差点毁了我。 最后我还是和家人如实说了,受到了他们的极大的鼓励,也找到了重新开始的勇气。 可惜这场疫情来的如此凶猛,职位少、要求高、电话面试、视频面试、在线coding、屡战屡败、屡败屡战,构成了我这两个月的常规生活。 我一开始也焦虑、茫然,甚至对自己的能力和工作经验深深怀疑。 后来经过几个好朋友的鼓励打气,也看了敖丙的很多面试文章,认真总结自己面试中不足的地方,查漏补缺,终于在这周确定了offer。(这是原话,我真没瞎加哈哈) 接下来我就我之前面过的腾讯、高德、京东、美团、饿了么、快手、字节跳动、滴滴、360金融、跟谁学、网联清算、华晨宝马、快看漫画、陌陌、脉脉等等等公司的面试题做一下总结,权当抛砖引玉,希望对大家有帮忙。 面试问题汇总 基础问题 linux和网络基础 (1)linux系统内核态和用户态是什么,有什么区别? (2)BIO、NIO、AIO都是什么,有什么区别? (3)TCP和UDP的区别?

Unity3d粒子特效:制作火焰效果

时光毁灭记忆、已成空白 提交于 2020-11-01 06:25:16
效果 分析 真实的火焰效果,通常包括:火、火光、火星等组成部分,火焰燃烧的同时会对周围环境进行烘焙。 1、针对火焰组成部分,我们可以分别创建粒子系统组件实现 2、火焰燃烧对周围环境的烘焙效果,我们可以通过灯光实现,如点光源。 那么,我们通过粒子系统 + 光源实现火焰效果,在Unity3d场景中结构应如下图所示: 1、Fire 火,火焰的主体部分,因燃烧产生的剧烈化学反应,灵动多变; 2、Flash 火光,即火焰的闪光效果,忽明忽暗; 3、Spark 火星,因高温而升起的燃烧碎屑,行踪飘忽,颜色渐变,效果随机; 4、Point Light 光亮,火焰燃烧对周围环境的烘焙效果; 实现 1、新建工程 1.1、新建3D工程 1.2、导入资源素材(后面会提供素材包) 1、天空盒1个 2、多帧火焰形态图1个 3、地面图1个 2、场景搭建 2.1、新建场景FireScene 2.2、设置场景天空盒,选择BlueSkybox 原因:系统默认天空盒太亮,火焰效果对比不明显,视觉冲击力差。 设置天空盒方式: Window --> lighting -->setting 2.3、创建平面(地面) 用于放置火焰,并作为被烘焙对象(即火焰的光照能显示在该物体上) 1、创建Quad,改名Ground 2、置为原点位置,即坐标(0,0,0) 2.4、调整摄像机视角 1 、Scene场景中调整为合适视角

漫画面试回答kafka为何如此之快|满分

梦想与她 提交于 2020-10-31 18:56:06
一 磁盘读写原理 磁盘的结构图: 当需要从磁盘读取数据时,要确定读的数据在哪个磁道,哪个扇区: 首先必须找到柱面,即磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间; 然后目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间; 一次访盘请求(读/写)完成过程由三个动作组成 寻道(时间):磁头移动定位到指定磁道; 旋转延迟(时间):等待指定扇区从磁头下旋转经过; 数据传输(时间):数据在磁盘、内存与网络之间的实际传输 由于存储介质的特性,磁盘本身存取就比主存慢,再加上机械运动耗费,磁盘的存取速度往往是主存的几百分之一甚至几千分支一 二 利用page cache+mmap 1.page cache Page Cache :以Page为单位,缓存文件内容。缓存在Page Cache中的文件数据,能够更快的被用户读取。同时对于带buffer的写入操作,数据在写入到Page Cache中即可立即返回,而不需等待数据被实际持久化到磁盘,进而提高了上层应用读写文件的整体性能。cached这列的数值表示的是当前的页缓存(page cache)的占用量,page cache文件的页数据,页是逻辑上的概念,因此page cache是与文件系统同级的 buffer cache:磁盘等块设备的缓冲,内存的这一部分是要写入到磁盘里的 。buffers列 表示当前的块缓存(buffer

云原生数据湖解决方案打破数据孤岛,大数据驱动互娱行业发展

我与影子孤独终老i 提交于 2020-10-31 17:39:39
简介: 数据湖是以集中、统一方式存储各种类型数据,数据湖可以与多种计算引擎直接对接,我们使用OSS作为数据湖底座,数据统一存储在OSS中,有效消除了数据孤岛现象,多种计算与处理分析引擎能够直接对存储在数据湖中的数据进行处理与分析,避免数据在不同引擎中反复复制,减少了不必要的资源损耗。 行业综述 全民娱乐时代,网络互娱市场持续保持高速增长 随着互联网的普及以及技术的发展,互联网娱乐行业的发展也日渐成熟。从早期单一门户网站,到个人博客的流行,再到视频网站的壮大。以及这两年层出不穷的短视频、直播、资讯平台等,网络娱乐行业的发展也正在从内容为王,开始往大数据驱动内容创新与推广的方向进行发展。 随着生活条件的变好,人们进入了娱乐即生活,生活即娱乐的时代。如同互联网时代到来引爆信息爆炸一样,互联网娱乐的兴起和发展同样有爆发力。据统计,截至2019年6月,我国网络直播用户规模达4.33亿,较2018年底增长3646万。而网络视频的用户更是达到7.59亿,较2018年底增长3391万。 尤其是在15年前后,随着4G的普及以及智能机的大众化,互联网娱乐行业迎来了一次流量红利时期,在这个时期,各种资讯、视频、直播、社交等软件如雨后春笋般冒出,大量的用户开始涌入。在当时只要是有稍微优质的内容输出,就能为作者或是整个平台带来巨大的流量。 行业发展方向 流量红利消失,用户增长陷入瓶颈 但是到了2020年

大数据Hadoop生态圈介绍

∥☆過路亽.° 提交于 2020-10-31 10:02:20
一.Hadoop简介 Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。 Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示: 二.Hadoop生态圈组件介绍 1.HDFS(分布式文件系统) HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。 client:切分文件,访问HDFS时,首先与NameNode交互,获取目标文件的位置信息,然后与DataNode交互,读写数据 NameNode:master节点,每个HDFS集群只有一个,管理HDFS的名称空间和数据块映射信息,配置相关副本信息,处理客户端请求。 DataNode:slave节点,存储实际数据,并汇报状态信息给NameNode,默认一个文件会备份3份在不同的DataNode中,实现高可靠性和容错性。

你真知道如何高效用mapPartitions吗?

烈酒焚心 提交于 2020-10-31 07:31:35
1. mappartition简介 首先,说到mapPartitions大家肯定想到的是map和MapPartitions的对比。大家都知道mapPartition算子是使用一个函数针对分区计算的,函数参数是一个迭代器。而map只针对每条数据调用的,所以存在访问外部数据库等情况时mapParititons更加高效。 mapPartitions函数: /** * Return a new RDD by applying a function to each partition of this RDD. * * `preservesPartitioning` indicates whether the input function preserves the partitioner, which * should be `false` unless this is a pair RDD and the input function doesn't modify the keys. */ def mapPartitions[U: ClassTag]( f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U] = withScope { val cleanedF = sc.clean(f)

[Spark学习] Spark RDD详解

痴心易碎 提交于 2020-10-31 06:29:46
文章目录 什么是RDD RDD的主要属性 RDD的组成 RDD的分区(Partition) RDD分区的特征 RDD分区与任务执行的关系 RDD的分区器(Partitioner) RDD的逻辑执行计划(Lineage) RDD的依赖关系(Dependencies) 窄依赖(Narrow Dependency) 宽依赖(Wide Dependency) RDD与Task/Stage的关系 Task Stage 什么是RDD RDD(Resilient Distributed Datasets),弹性分布式数据集,是Spark的基本数据结构。 它是一个 不可变 的 分布式 对象集合。 RDD中的每个数据集被划分为 逻辑分区 ,其可以在集群的 不同节点上计算 。 RDD可以包含任何类型的Python,Java或Scala对象,包括用户定义的类。 形式上,RDD是 只读的 分区 记录 集合 。 可以通过读取外部存储系统中的数据集(如HDFS,HBase或提供Hadoop输入格式的任何数据源等)、转换现有数据集合或对其他RDD的数据进行转换来创建RDD。 RDD是一个支持 容错 集合,可以 并行操作 。 RDD的主要属性 从RDD的内部定义来看,每个RDD拥有以下五个主要属性: 分区列表 与其他RDD的依赖关系列表 计算分片(split)的函数 (可选)

Spark RDD

妖精的绣舞 提交于 2020-10-31 00:40:37
转自:https://blog.csdn.net/u011564172/article/details/53310530 概要 RDD是为了处理迭代算法和数据发掘应运而生的,keep数据在内存,显著提升性能。 RDD基于lineage实现容错,而不是shared state的update。 简介 背景 原有的并行框架MapReduce无法有效利用内存,并且不能重复利用迭代计算的中间结果,而是将中间结果存储在磁盘上,增加了数据备份(hdfs默认为3份)开销,磁盘IO,序列化的时间,迭代计算在数据挖掘和图算法中很常见,例如k-means,逻辑回归,PageRank。 挑战 RDD设计中的主要挑战是提供高效的“fault tolerance”编程接口,现有的对于内存存储的容错都是细粒度的对于可变状态的update,具体为跨机器的数据备份(replicate data cross machine)或者跨机器的日志更新(log updates cross machine),需要跨机器传输备份数据,效率低。不同的RDD提供基于粗粒度的transformations(例如map,filter等)构建的lineage(血统),如果一个RDD丢失数据,则可根据lineage找出丢失数据的来源,重新计算,达到容错,而不需要数据备份。 RDD(Resilient Distributed Datasets