partition

spark调优——算子调优

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 03:02:16
算子调优一:mapPartitions 普通的map算子对RDD中的每一个元素进行操作,而mapPartitions算子对RDD中每一个分区进行操作。如果是普通的map算子,假设一个partition有1万条数据,那么map算子中的function要执行1万次,也就是对每个元素进行操作。 如果是mapPartition算子,由于一个task处理一个RDD的partition,那么一个task只会执行一次function,function一次接收所有的partition数据,效率比较高。 比如,当要把RDD中的所有数据通过JDBC写入数据,如果使用map算子,那么需要对RDD中的每一个元素都创建一个数据库连接,这样对资源的消耗很大,如果使用mapPartitions算子,那么针对一个分区的数据,只需要建立一个数据库连接。 mapPartitions算子也存在一些缺点:对于普通的map操作,一次处理一条数据,如果在处理了2000条数据后内存不足,那么可以将已经处理完的2000条数据从内存中垃圾回收掉;但是如果使用mapPartitions算子,但数据量非常大时,function一次处理一个分区的数据,如果一旦内存不足,此时无法回收内存,就可能会OOM,即内存溢出。 因此,mapPartitions算子适用于数据量不是特别大的时候

Kafka 生产者、消费者与分区的关系

无人久伴 提交于 2019-12-06 02:58:19
kafka 生产者、消费者与分区的关系 背景 最近和海康整数据对接, 需要将海康产生的结构化数据拿过来做二次识别. 基本的流程: 海康大数据 --> kafka server --> 平台 Kafka 的 topic 正常过车 topic: BAYONET_VEHICLEPASS 违法过车 topic: BAYONET_VEHICLEALARM 前言 首先我们需要对kafka中的一些名词有一定的了解, 有过一些使用经验, 一般来说, 生产者发送消息到主题, 而消费者从主题消费数据 ( 我初次接触的时候, 就是这样理解的, 后来在实践中慢慢发现分区这个角色的重要性 ), 主题下边是分区, 消息数据是存储在分区中的, 所以事实上是生产者发送消息到主题, 然后存储在分区上, 消费者从某个主题下的某个分区上消费数据, 那么生产者将消息发送到哪个分区, 消费者从哪个分区开始消费呢 ? 如何设置主题下的分区数量 在 config/server.properties 配置文件中, 可以设置一个全局的分区数量, 这个分区数量的含义是: 每个主题下的分区数量 , 默认为 1 也可以在创建主题的时候, 使用 --partitions 参数指定分区数量 bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my_topic -

PostgreSQL从继承到分区(一)

孤街浪徒 提交于 2019-12-06 02:57:55
PostgreSQL从继承到分区 (pg_partman) PostgreSQL从继承到分区(一) http://my.oschina.net/lianshunke/blog/205296 PostgreSQL从继承到分区(二) http://my.oschina.net/lianshunke/blog/205296 PostgreSQL从继承到分区(三) http://my.oschina.net/lianshunke/blog/205316 一、Inheritance http://www.postgresql.org/docs/9.3/static/ddl-inherit.html 通过下面的简单例子说明什么是表继承: 1.1 单表继承 postgres=# CREATE DATABASE lsk; CREATE DATABASE postgres=# \c lsk You are now connected to database "lsk" as user "postgres". lsk=# CREATE TABLE t1(id int,name varchar(20)); CREATE TABLE lsk=# CREATE TABLE t2(age int) inherits(t1); CREATE TABLE {在子表中新添的字段会汇同父表的所有字段一起作为子表字段}

How to divide a set of numbers into two sets such that the difference of their sum is minimum

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 02:47:05
How to write a Java Program to divide a set of numbers into two sets such that the difference of the sum of their individual numbers, is minimum. For example, I have an array containing integers- [5,4,8,2]. I can divide it into two arrays- [8,2] and [5,4]. Assuming that the given set of numbers, can have a unique solution like in above example, how to write a Java program to achieve the solution. It would be fine even if I am able to find out that minimum possible difference. Let's say my method receives an array as parameter. That method has to first divide the array received into two arrays,

不谈情怀,只跟你谈Hive SQL

一笑奈何 提交于 2019-12-06 02:46:51
简介 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能, 可以将SQL语句转换为MapReduce任务进行运行 ,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据。而mapreduce开发人员可以把己写的mapper和reducer 作为插件来支持Hive 做更复杂的数据分析。 它与关系型数据库的SQL 略有不同,但支持了绝大多数的语句如DDL(data definition language)、DML(Data Manipulation Language) 以及常见的聚合函数、连接查询、条件查询。HIVE不适合用于联机事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。 HIVE的特点: 可伸缩(在Hadoop的集群上动态的添加设备),可扩展,容错,输入格式的松散耦合 。 然后存储什么的不用说了,在hive简介里说的够多了,而且只要你熟悉一种数据库的话,大部分东西都是一样的,比如Primary Type之类的,大同小异。我们聊点儿不一样的。 1. 复杂类型Complex Type

Kafka 自定义指定消息partition策略规则及DefaultPartitioner源码分析

浪尽此生 提交于 2019-12-06 02:25:12
Kafka 自定义指定消息partition策略规则及DefaultPartitioner源码分析 一.概述 kafka默认使用DefaultPartitioner类作为默认的partition策略规则,具体默认设置是在ProducerConfig类中(如下图) 二.DefaultPartitioner.class 源码分析 1.类关系图 2.源码分析 public class DefaultPartitioner implements Partitioner { //缓存map key->topic value->RandomNumber 随机数 private final ConcurrentMap<String, AtomicInteger> topicCounterMap = new ConcurrentHashMap<>(); //实现Configurable接口里configure方法, public void configure(Map<String, ?> configs) {} //策略核心方法 public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) { /

Android eMMC 分区详解

蓝咒 提交于 2019-12-05 17:49:46
1. fastboot flash boot boot.img 当使用上述命令写入编译的Image时,fastboot做了些什么?基于那些信息把Image写到哪里呢? Android的每一款产品,都有一个partition.xml描述,有关分区的信息。下面是一个例子。 2. eMMC 分区表 Partition# Name# Size# Strat LBA-End LBR Description# 0 MBR & GPT 0x00000000-0x000000FF Master Boot Record and GUID Partition Table 1 x-loader(MLO) 256KB 0x00000100-0x000001FF First stage bootloader 2 bootloader(u-boot.bin) 384KB 0x00000200-0x000005FF Second stage bootloader 3 misc 128KB 0x00000600-0x000006FF Reserved.This partition can be used for internal purpose 4 recovery (zImage + recovery-ramdisk.img) 8MB 0x00000A00-0x000049FF recovery

go操作kafka

允我心安 提交于 2019-12-05 17:44:31
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收kafka消息。 sarama Go语言中连接kafka使用第三方库: github.com/Shopify/sarama 。 下载及安装 go get github.com/Shopify/sarama 注意事项 sarama v1.20之后的版本加入了 zstd 压缩算法,需要用到cgo,在Windows平台编译时会提示类似如下错误: # github.com/DataDog/zstd exec: "gcc":executable file not found in %PATH% 所以在Windows平台请使用v1.19版本的sarama。 连接kafka发送消息 package main import ( "fmt" "github.com/Shopify/sarama" ) // 基于sarama第三方库开发的kafka client func main() { config := sarama.NewConfig() config.Producer.RequiredAcks = sarama.WaitForAll // 发送完数据需要leader和follow都确认 config

磁盘管理1--磁盘分区

倾然丶 夕夏残阳落幕 提交于 2019-12-05 17:09:53
1.名词解释 分区方式: mbr(bootloader引导程序446字节,mpt主分区表64字节,55a硬盘标识2字节)、gpt 主分区 扩展分区 逻辑分区 2.磁盘查看命令 fdisk -l ##系统中的所有磁盘设备 df -Th ##系统正在挂载的磁盘设备 blkid ##系统可以挂载的磁盘设备id 3.分区划分 fdisk /dev/vdb ##建立磁盘分区 [root@localhost ~]# fdisk /dev/vdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): m ##获得帮助 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition ##删除分区 g create a new empty GPT partition table G create an IRIX (SGI) partition

【消息中间件】kafka

荒凉一梦 提交于 2019-12-05 11:50:40
一、kafka整体架构 kafka是一个发布订阅模式的消息队列,生产者和消费者是多对多的关系,将发送者与接收者真正解耦; 生产者将消息发送到broker; 消费者采用拉(pull)模式订阅并消费消息; 二、生产者介绍 分区器:制定partition,按照msg key进行分区,保证同样key的消息投递到同一个partiton。例如,按照uid最后两位作为key,可以有100partiron,来保证相同uid的时间在一个partition中。 kafka发送消息是 批量发送+异步的方式来发送,性能提升,消息有序性无法保证; 三、消费者介绍 消费者是指调用poll方法的实体,可以是一个线程,也可以是一个服务; 为了避免消费者的浪费,消费者数量要小于partition数量; 3、拉取、处理消息模型 (1)同步消息处理:一个线程对应一个partiton,能够保证partiton内消息有序,消费性能受限于处理消息的速度。 (2)异步处理消息:一个线程负责拉取消息,线程池负责处理消息的模式,不能保证partition内消息有序,消息消费速度快,节省tcp连接开销。 四、消息有序性及重复性 1、消息乱序产生原因: (1)发送者:异步发送 + 发送失败重试导致的消息乱序 (2)接收者:单个拉消息的线程,多线程同时处理消息的先后顺序不同,导致消息被处理的时间乱序; 多个拉消息的线程