自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zg_hover的专栏

Get buy living or get busy dying!

原创 spark sql实战—如何把聚合操作用到多个列上

概述 有时我们希望某个聚合操作,比如:sum,avg等,能够作用到多个列上,也就是一次计算一个或多个列的聚合值。这样可以简化我们的代码。 本文讲述如何在实战中把聚合操作使用到多个列上。 实战 19.如何把聚合函数使用到多个列上? python的写法 >>> df = spar...

2020-06-13 10:11:40 93 0

原创 spark rdd实战—分区器(Partitioner)的理解和使用

概述 在《spark2原理分析-RDD的Partitioner原理分析》一文中,我们了解了分区器的基本概念,本文通过实际的例子来进一步理解分区器的概念,并学习如何使用分区器。 分区器的使用场景 分区器在类型为(k,v)的RDD时使用。但不要频繁的修改分区器,频繁使用分区器可能会导致更多的shuff...

2020-06-12 12:26:36 104 0

原创 如何在spark-shell中调试运行scala文件

概述 本文讲述如何通过spark-shell来调试scala代码文件,这样不需要IDE就可以对scala文件进行调试,在代码量较小的情况下比较适用。 方法1:使用:load 命令 有时候为了在spark-shell中调试一段代码,可以在spark-shell中使用:load 命令。如下: tes...

2020-06-11 08:51:42 192 0

原创 Spark Sql实战--合并数据

数据的合并 概述 本文介绍如何通过spark sql对数据进行各种的合并操作,包括:列合并,行合并,相同key的合并等等。 在实际的数据处理场景中,数据的合并操作非常常用,这里介绍如何通过spark sql来完成常用的合并操作。 数据准备 例子数据 准备以下数据: name,address,a...

2020-05-23 14:46:08 82 0

原创 spark sql实战—拆分数据

拆分的数据 有时在进行数据时我们需要把一列数据分割成多列数据,把一个字段值,分割成多个值。本节介绍如何通过spark sql提供的函数来进行数据的分割。 1. 数据拆分概述 数据拆分操作 在进行数据处理时,通常我们需要对数据进行拆分。比如:把一列拆分成多行,多列,把一行拆分成多行,多列等。 在sp...

2020-05-23 14:44:40 157 0

原创 深入浅出RDD Persist和Cache

深入说明RDD的persist和cache的实现和应用。 并结合RDD的计算和一个具体的例子来说明persist和cache的使用场景。

2020-05-23 14:40:30 81 0

原创 通过Papermill+Airflow来调度运行Jupyter-Notebook(.ipynb)文件-实战

通过Parpermill+Airflow来运行Jupyter-Notebook(.ipynb)文件实战 在完成数据处理和数据科学代码时,通常我们会使用jupyter-notebook来进行开发,我们可以会开发很多个notebook文件(.ipynb),notebook文件之间可能还存在依赖关系。n...

2020-04-26 12:53:05 352 0

原创 spark2 sql原理分析--逻辑计划转换成物理计划的实现分析(SparkPlanner)

概述 本文介绍介绍SparkPlanner的实现原理。 SparkPlanner将优化后的逻辑执行计划转换为物理执行计划的计划器(Planner)。 SparkPlanner是一个具体的Catalyst Query Planner,它使用执行计划策略( execution planning str...

2020-02-22 20:22:59 336 0

原创 neo4j-3.x性能调优

1.配置优化 优化内存配置 在neo4j中有两个内存配置项,直接决定了neo4j的性能。在neo4j中最重要的内存的配置有两项: 堆内存(Heap size) 堆内存是neo4j运行时需要的内存,用于: 查询执行 事务状态 图形管理等 堆的大小决定于neo4j的使用性质。配置堆内存的参数如...

2020-02-10 10:21:30 411 0

原创 spark2 sql原理分析--如何调试Query Execution

概述 本文讲述如何调试 Query Execution(qe),qe会完成整个spark sql的全部执行计划的处理过程,直到生成rdd代码。 为了更好的理解从逻辑计划到物理计划,最后生成的rdd代码,需要能够对该模块进行调试。 理解spark sql的执行过程 数据准备 按以下csv数据格式准备...

2020-01-20 08:22:54 152 0

原创 spark2 sql原理分析—执行计划的生成和处理(QueryExecution实现概要)

概述 本文分析Dataset中的执行计划的处理过程。执行计划的处理包括以下几个过程:分析逻辑执行计划->优化逻辑执行计划->生成一个或多个物理执行计划->优化物理执行计划->生成可执行代码。 这个过程都是在dataset的成员:QueryExecution中完成。所以本篇,...

2020-01-20 08:20:39 204 0

翻译 Delta Lake-深入理解表结构和结构演变

概述 数据,就像我们的经验一样,总是在不断发展和积累。为了更上步伐,我们的表结构必须适应新的数据,其中包括一些新的维度-一种新的方式来查看我们以前没有概念的事物。这些心理模型与表的结构没有什么不同,它们定义了我们如何对新信息进行分类和处理。 这将我们带到表结构管理。随着业务问题和需求随着时间的推移...

2019-12-23 13:50:08 129 0

原创 spark sql实战(pyspark)—如何把多个udf作用于同一列数据

概述 本文介绍如何把多个udf函数使用到dataframe/dataset的同一列上。 使用思路 有时候我们需要在同一列上进行多个函数操作,形成一个函数链。也就是把上一个函数的输出作为下一个函数的输入,把最后的结果作为处理结果。 有多种方式可以实现该功能,这介绍一种函数链的方式,基本思路如下: ...

2019-12-23 08:27:04 181 0

原创 spark sql实战—加载csv文件到动态分区表

概述 本文讲述如何通过spark sql把一个dataframe加载到spark的动态分区表中。 场景介绍 把csv和parquet文件加载到spark的动态分区表中,有很多中方案,这里介绍如何通过spark的dataframe把数据文件加载到动态分区表中。 注意:为了保证性能,指定分区的字段的字...

2019-12-23 08:26:05 73 0

原创 DeltaLake介绍

概述 DeltaLake是DataBricks的一个开源项目,它是带ACID的开源存储层,可为数据湖(data lake)带来可靠性。它和Spark的API完全兼容。 总体架构图 DeltaLake的关键特点和优势 ACID事务(ACID Transactions) Data lakes(数据湖...

2019-11-30 15:21:42 350 0

原创 spark2原理分析-shuffleWriter:SortShuffleWriter实现分析

概述 本文分析shuffleWriter的实现类:SortShuffleWriter的详细实现。 ShuffleWriter抽象类 /** * Obtained inside a map task to write out records to the shuffle system. */ p...

2019-11-15 19:30:03 66 0

原创 spark2原理分析-shuffleWriter之BypassMergeShuffleWriter实现分析

概述 本文分析shuffleWriter的实现类:BypassMergeSortShuffleWriter的详细实现原理。 BypassMergeSortShuffleWriter介绍 BypassMergeSortShuffleWriter的启用条件 shuffl过程中进行write时,会根据不...

2019-11-15 19:23:45 71 0

原创 spark2原理分析-广播变量(Broadcast Variables)的实现原理

概述 本文介绍spark中Broadcast Variables的实现原理。 基本概念 在spark中广播变量属于共享变量的一种,spark对共享变量的介绍如下: 通常,当在远程集群节点上执行传递给Spark操作(例如map或reduce)的函数时,它将在函数中使用的所有变量的单独副本上工作。这...

2019-08-19 08:03:09 460 0

原创 spark2原理分析-BlockManagerMaster实现原理

概述 本文讲说明spark中BlockManager的基本原理。 BlockManager的基本概念 BlockManager运行在spark的每个节点上(包括driver和executors),它提供了一个保存和获取本地或远端数据块到内存、磁盘、或off-heap中的统一接口。 BlockMan...

2019-08-17 21:07:19 244 0

原创 spark2原理分析-BlockManager总体架构设计

概述 本文介绍spark的存储体系,通过本文的学习可以对spark的BlockManager体系有一个总体的把握。 BlockManger的总体架构 BlockManager运行在spark的每个节点上(包括driver和executors),它提供了一个保存和获取本地或远端数据块到内存、磁盘、或...

2019-08-17 21:05:07 99 0

原创 spark2实战-使用Spark SQL的Join

概述 join操作在进行数据处理时非常常见,而spark支持多种join类型。本文对spark中多种Join类型进行说明,并对不同join的使用场景进行了介绍和举例说明。 使用join操作的注意事项 在两个数据集比较的列有唯一值,使用默认join(inner join)会有较好的性能,但要注意:...

2019-07-11 21:28:20 343 0

原创 spark2 Dataset实现原理分析-Dataframe原理介绍和Dataset的对比

概述 本文讲述Spark Dataframe的原理要点。 Dataframe原理要点 Spark SQL引入了一个名为DataFrame的表格函数数据抽象。设计它的目的在于:简化Spark应用程序的开发。这样就可以在Spark基础架构上处理大量结构化表格数据。 DataFrame是一种数据...

2019-06-15 14:05:42 489 0

原创 Spark2 Dataset实现原理分析-Dataset实现原理概要

概述 本文讲述spark sql中的dataset的组成部分,并对其创建过程进行分析。 Dataset要点 我们可以总结出dataset的一些要点,如下: 和关系型数据表一样,Dataset是强类型的。 数据集的行的集合,被称为Dataframe。 和RDD一样,Dataset的操作分为两类:转...

2019-06-07 22:03:34 369 0

原创 spark2原理分析-shuffle框架之ShuffleReader实现分析

概述 本文讲述shuffleReader的具体实现。从这篇文章中,我们已经知道shuffleReader是一个抽象类,该抽象类只有一个read函数,用来在shuffle阶段从本地或远程获取数据。 该抽象类的实现类是:BlockStoreShuffleReader。本文主要讲述该实现类的具体实现。 ...

2019-05-25 21:34:31 238 0

原创 spark2原理分析—shuffle框架的实现概要分析

概述 本文分析spark2的shuffle过程的实现。 shuffle过程介绍 shuffle总体流程 spark2的shuffle过程可以分为shuffle write和shuffle read。shuffle write把map阶段计算完成的数据写入到本地。而shuffle read是从不同的...

2019-05-19 20:41:21 1339 0

原创 spark2实战-通过spark dataframe导入csv文件到动态分区表

概述 本文讲述如何把一个dataframe加载到spark的动态分区表中。 场景介绍 把csv和parquet文件加载到spark的动态分区表中,有很多中方案,这里介绍如何通过spark的dataframe把数据文件加载到动态分区表中。 注意:为了保证性能,指定分区的字段的字典数据的唯一值最好不要...

2019-05-19 10:21:00 768 0

原创 spark2原理分析-SparkEnv的初始化

概述 本文讲述spark执行环境:SparkEnv的概念和实现原理。 spark执行环境(SparkEnv)的基本概念 spark执行环境的实现类是:SparkEnv,该类包括所有spark运行实例(master和worker)需要的运行环境工具类,包块:序列化,block manager,map...

2019-05-19 10:14:03 207 0

原创 spark2原理分析-统一内存管理实现分析

概述 本文讲述统一内存管理的实现原理。并从源码角度进行分析。 堆外内存(off-heap memory)和堆内内存(on-heap memory) 堆外内存(off-heap memory) 为了进一步优化内存的使用以及提高 Shuffle 时排序的效率,Spark 引入了堆外(Off-heap)...

2019-05-19 10:12:56 184 0

原创 JanusGraph实战-动态创建图(ConfiguredGraphFactory)

概述 本文讲述如何在JanusGraph中使用动态图。 为什么要使用动态图 在前面的一些文章中,介绍了简单的使用JanusGraph来进行一些图的操作。但请注意,绝大部分的操作都是基于现有的图基础上进行的,那么为什么启动JanusGraph Server就已经有图存在了呢? 其实是因为,我们的gr...

2019-04-18 16:07:43 1298 0

原创 JanusGraph实战-多种方式使用JanusGraph Server

概述 本文讲述通过多种方式来访问和使用JanusGraph。并通过实际例子进行讲解。 JanusGraph Server和JanusGraph说明 JanusGraph使用Gremlin Server引擎作为服务器组件来处理和响应客户端的请求。当把Gremlin Server打包在JanusGra...

2019-04-17 21:48:51 1565 0

原创 JanusGraph实战-使用模式说明

概述 本文介绍JanusGraph的使用模式和基本的配置。 JanusGraph的两种使用方式 JanusGraph有两使用模式: 把JanusGraph作为依赖包嵌入到应用中。 JanusGraph作为服务运行。 在实际情况下,常用的运行模式是:以服务的方式运行janusGraph,把Jan...

2019-04-17 21:42:09 507 0

原创 spark2实战-使用checkpoint保存和读取还原RDD

概述 本文讲述如何使用checkpoint来保存rdd,并读取还原rdd的数据。 checkpoint简介 checkpoint可以把rdd持久化到磁盘上,可以是本地磁盘也可以是外部存储系统(比如:hadoop文件系统)。 要注意的是:在rdd进行checkpoint时,会先把rdd的血缘(lin...

2019-04-17 09:33:42 1135 0

原创 JanusGraph安装和使用入门:JanuxGraph+Hbase方式

概述 本文讲述如何在单机上安装和使用JanusGraph。 JanusGraph安装说明 通过JanusGraph的架构可知,JanusGraph由4大部分组成,(后台存储系统,后台索引系统,Gremlin+JanusGraph组件,后台Cache系统)。而这几大部分可以分开安装,且支持灵活的配置...

2019-04-15 14:09:37 2500 0

原创 JanusGraph的架构介绍

概述 本文讲述JanusGraph的基本架构设计。 JanusGraph概况 JanusGraph是一个图数据库引擎。JanusGraph专注于压缩的图序列化,丰富的图数据建模和高效的查询执行。此外,JanusGraph利用Hadoop进行图分析和批图处理。JanusGraph为数据持久性,数据索...

2019-04-12 17:49:54 339 0

原创 spark2 rdd实战-使用mapPartitons实战

概述 本文讲述map和mapPartitions的相同点和区别。并对mapPartitions优缺点进行总结,并总结了mapPartitions的使用例子。 map和mapPartitions map mapPartitions transformation transformat...

2019-04-11 23:01:33 363 0

原创 分布式图数据库-JanusGraph简介

概述 本文介绍分布式图数据库JanusGraph的基本概念和优势。 基本概念 JanusGraph是一个可扩展的图数据库(graph database),针对存储和查询包含分布在多机群集中的数千亿个顶点和边的图进行了优化。JanusGraph是一个事务数据库,可以支持数千个并发用户实时执行复杂的图...

2019-04-11 22:53:29 900 0

原创 spark2 rdd实战-加载数据到rdd

概述 本文讲述通过spark加载各种形式的数据并形成rdd的各种方式。 加载数据到rdd的多种方式 可以有多种方式把数据加载到rdd中。如下: 并行化集合-parallelize函数 介绍 创建rdd的最简单的方式就是并行化(parallelize)数据集,也就是说把一个对象集合转换为可以并行操作...

2019-04-10 09:34:40 339 0

原创 如何通过cat命令快速生成一个大文件

概述 有时候我们需要一个较大的文件来进行测试,可以通过shell的cat命令来快速生成一个大文件。 这是以前玩linux时,用到的一个小技巧,分享给大家。 具体操作 主要使用了<<和>以及cat的输入属性,使得输入不断重复添加到一个文件的末尾。 cat < filename...

2019-04-09 14:14:20 743 0

原创 大数据治理开源组件Griffin介绍

概述 大数据发展到今天,对数据质量的要求越来越高,如何保证数据的质量,如何对数据的一致性进行检测? 本文介绍开源的数据治理组件griffin的功能和组成。griffin是国人(ebay工程师)编写的一款数据治理开源软件。 Griffin介绍 Apache Griffin(以下简称Griffin)是...

2019-04-06 18:13:53 3531 0

原创 调试和观察mysqld server源码的运行

概述 mysqld的源码十分的庞大,模块很多,本文讲述如何通过gdb来调试和观察mysqld源码的运行。 下载mysql server源码 从这里下载想要调试的mysql server源码 http://downloads.mysql.com/archives.php 编译前的配置 进入源码...

2019-04-06 08:09:59 110 0

提示
确定要删除当前文章?
取消 删除