- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 Pandas实战-筛选DataFrame
本文将主要介绍以下内容:1. 针对内存使用优化数据集2. 按单一条件筛选3. 按多个条件筛选4. 其它筛选方法5. 处理重复项在前面的文章中,我们练习了从DataFrame中选择单独的行,列和值。现在让我们探索如何基于一个或多个条件来筛选数据。1. 针对内存使用优化数据集和往常一样,让我们从导入pandas开始:In[1]: import pandas as pd接下来让我们看看要使用的employee.csv测试数据集,它是公司虚构的员工集合。每条记录都...
2021-03-07 23:27:59 2303 1
原创 Pandas实战-DataFrame对象
本文将主要介绍以下内容:1. DataFrame概述2. Series和DataFrame的相似点3. DataFrame排序4. 按DataFrame索引排序5. 设置新索引6. 从DataFrame读取列7. 从DataFrame读取行8. 重命名列或行9. 重置索引DataFrame是Pandas的另外一个主要的数据结构,它是由行和列组成的二维数据结构,因此需要两个参考点来从数据集中提取给定值。1. DataFrame概述DataFra...
2021-02-24 23:35:04 1842
原创 Pandas实战-Series的方法
本文将主要介绍以下内容:1. 导入CSV数据集2. 排序Series值3. 修改原Series值4. 统计Series值5. apply方法在介绍Series的方法之前,需要一些现实世界的数据集,本文会使用以下三个CSV文件:- pokemon.csv,超过800个的Pokémon,这是任天堂最受欢迎的宠物小精灵- google_stock.csv,Google从2004年8月首次亮相到2019年10月的每日美元价格- revolutionary_war.csv,美.
2021-02-15 05:04:28 1362
原创 Pandas实战-Series对象
本文将主要介绍以下内容:1. Series概述2. 从Python对象创建Series3. 读取最前面和最后面的数据4. 数学运算5. 将Series传递给Python的内置函数Series是Pandas的两个主要数据结构之一,它是用于存储同质数据的一维标记数组。术语“同质”是指这些值具有相同的数据类型。每个Series的值都被分配一个标签和顺序。标签是值的标识符,可以是任何数据类型;顺序用整数表示,第一个值位于位置0。数据结构是一维的,因为任何元素都可以通过其标签或..
2021-02-09 04:47:47 3830
原创 Kafka Streams实战-KTable API
本文会介绍:流和表的关系 数据更新和KTable的配置 聚合、窗口和流表连接 全局KTable1. 流和表的关系1.1 数据更新流假设我们有一个股票价格的数据流,每个数据包含股票的ID,timestamp和股价,要把这些数据写入到关系型数据库的表格里,如果使用股票的ID作为主键,那么具有相同ID的数据会被更新,我们可以把这种用于更新数据的流视为更新流。如下图所示:这类似...
2019-01-31 11:41:42 7626 2
原创 Kafka Streams实战-流和状态
本文会介绍:有状态操作 使用状态存储 连接两个流 Kafka Streams的timestamps1. 有状态操作1.1 转换处理器KStream.transformValues是最基本的有状态方法,下图展示了它工作的原理:此方法在语义上与KStream.mapValues方法相同,但主要的区别是transformValues可以访问状态存储实例来完成其任务。1.2...
2018-12-14 09:31:51 6972
原创 Kafka Streams实战-开发入门
本文会介绍:Kafka Streams APIs Kafka Streams的Hello World例子 深入探索基于Kafka Streams的ZMart应用程序 把输入流拆分为多个流1. Streams APIsKafka有两类流APIs,low-level Processor API和high-level Streams DSL。本文介绍的是后者DSL,它的核心是KStrea...
2018-11-13 09:54:34 9449 73
原创 Kafka基础-流处理
1. 什么是流处理?首先,让我们说一下什么是数据流(也称为事件流)?它是无边界数据集的抽象说法,无边界意味着无限且不断增长,因为随着时间的推移,新数据会不断地到来。除了无边界的特性之外,事件流模型还有其它几个属性:1.1 事件流是有序的这在交易事件里是最容易理解的,先在账户里存钱然后消费与先消费再还钱是非常不同的,后者将产生透支费用,而前者不能透支。这是事件流和数据库表之间的不同点...
2018-10-26 17:10:20 7107 6
原创 Kafka基础-可靠性数据传输
可靠的数据传输是系统的一个必要属性,就像性能一样,必须从一开始就设计到系统中。Apache Kafka在可靠的数据传输方面非常灵活,支持非常多的配置参数。1. 可靠性保证当我们讨论可靠性时,通常会提到保证这个术语。最著名的可靠性保证ACID,它是关系型数据库普遍支持的标准可靠性保证。理解Kafka提供的保证对于创建可靠的应用是至关重要的,Kafka能够保证:同一个分区消息的顺序保证。在...
2018-09-17 14:01:50 1788
原创 Kafka基础-内部原理
理解Kafka的内部原理可以有助于故障的排除,因此本文会着重介绍以下三个部分:Kafka复制的工作原理 Kafka是怎样处理生产者和消费者的请求 Kafka是怎样储存数据,例如文件格式和索引1. 集群成员Kafka使用Apache Zookeeper来维护当前集群的成员列表,每个broker都有一个唯一的标识,该标识可以在broker的配置文件设置或者自动生成。每次broker进程启...
2018-08-21 16:39:25 1318
原创 Kafka基础-消费者读取消息
下文介绍如何使用Java从Kafka订阅和读取消息,它和从其它消息系统读取消息有点不同,涉及到一些独特的概念。所以我们要先了解这些概念:1. Kafka消费者概念1.1 消费者和消费者组当你只有一个消费者而且生产者发送消息的速率比消费者读取消息的速率要快的时候,处理新消息就会造成延时,显然需要配置多个消费者去读取消息。Kafka的消费者是消费者组的一部分,当多个消费者订阅一个topic...
2018-07-31 14:18:36 11623
原创 Kafka基础-生产者发送消息
无论你是使用Kafka作为队列,消息总线还是数据存储平台,你都会用到生产者,用于发送数据到Kafka。下文介绍如何使用Java来发送消息到Kafka。1. 发送消息的主要步骤首先创建ProducerRecord对象,此对象除了包括需要发送的数据value之外还必须指定topic,另外也可以指定key和分区。当发送ProducerRecord的时候,生产者做的第一件事就是把key和value序列...
2018-06-20 15:12:13 27980 3
原创 HDFS集群版本升级执行步骤
1 概述本文档用于没有配置高可用的HDFS集群版本升级执行的详细步骤说明,版本由2.7.3升级到2.9.0。2 前提条件假设已有安装配置好整合了Kerberos的HDFS集群和YARN,本文使用5台服务器,角色分别为:hadoop0:NameNode、SecondaryNameNode、ResourceManagerhadoop1:DataNode、NodeManagerhadoop2:DataN...
2018-05-31 15:07:04 2105
原创 HDFS集群整合Kerberos配置步骤
1 概述本文档用于HDFS整合Kerberos配置的详细步骤说明,版本分别为2.7.3和1.16。2 前提条件假设已有安装配置好的HDFS集群和YARN,本文使用4台服务器,角色分别为:192.168.1.10:NameNode、SecondaryNameNode、ResourceManager192.168.1.11:DataNode、NodeManager192.168.1.12:DataNo...
2018-05-25 16:44:44 4729
原创 Spark机器学习之协同过滤算法使用-Java篇
协同过滤是普遍用于推荐系统,这些技术旨在填补用户和项目关联矩阵里面缺少的值。Spark目前实现基于模型的协同过滤,其中模型的用户和项目由一组小的潜在因素所描述,可用于预测缺少的值。Spark使用交替最小二乘法alternating least squares(ALS)算法来学习这些潜在因素。1. ALS的参数numBlocks:用户和项目将会被分区的块数,以便并行化计算(默认值为1
2017-08-30 17:38:14 4089
原创 org.apache.spark.shuffle.FetchFailedException:Failed to connect to异常
最近在做Spark的性能优化,测试使用不同CPU核数和内存对计算性能的影响,由于是在测试集群进行测试的,硬件配置比生产上面的要少和低,遇到了不少的问题,其中一个值得说一下的就是org.apache.spark.shuffle.FetchFailedException:Failed to connect to /xxx:433011. 运行环境1.1 硬件3台服务器,分别
2017-08-01 00:41:17 14823
翻译 官方HDFS架构设计原理说明(下)
玩了HDFS已经有好多年了,之前一直都是边学边用,直到现在才真正有时间记录一下学到的知识O(∩_∩)O6. 文件系统元数据的持久化HDFS的命名空间是由命名节点NameNode来存储的。NameNode使用了一个叫EditLog的事务日志来持续记录文件系统元数据的每一次更改,例如在HDFS创建一个新的文件,NameNode会在EditLog里面插入一条这样的记录。类似地,修改文件的
2017-06-07 14:48:42 1106
翻译 官方HDFS架构设计原理说明(上)
玩了HDFS已经有好多年了,之前一直都是边学边用,直到现在才真正有时间记录一下学到的知识O(∩_∩)O1. 引言HDFS全称是Hadoop Distributed File System,Hadoop分布式文件系统,顾名思义它是一个分布式的文件系统,设计于运行在普通硬件之上。它和现在的分布式文件系统有很多相似点,但是它们的区别也是很明显的。HDFS是高容错的,被设计于运行在廉价的硬
2017-05-08 09:58:36 5450
原创 当对象包含嵌套对象时,使用Spark SQL执行sql查询抛出scala.MatchError异常
1. 运行环境本文使用Spark SQL 2.1.0版本2. 使用代码例如有个对象,除了包含简单的基本数据String,int之外还包含一个Location对象,就是所说的嵌套对象:import java.io.Serializable;public class Person implements Serializable { private static
2017-04-13 09:44:49 6764
原创 执行stop-dfs.sh后无法停止namenodes、datanodes和secondary namenodes
1. 环境本文使用Hadoop 2.7.3版本2. 错误信息执行stop-dfs.sh后显示以下信息:Stopping namenodes on [master]master: no namenode to stopslave1: no datanode to stopslave2: no datanode to stopslave3: no datanod
2017-04-07 11:23:57 3745 1
原创 SparkSQL编程指南之Java篇三-数据源(下)
4. Hive TablesSpark SQL支持对Hive的读写操作。然而因为Hive有很多依赖包,所以这些依赖包没有包含在默认的Spark包里面。如果Hive依赖的包能在classpath找到,Spark将会自动加载它们。需要注意的是,这些Hive依赖包必须复制到所有的工作节点上,因为它们为了能够访问存储在Hive的数据,会调用Hive的序列化和反序列化(SerDes)包。Hive的配
2017-03-10 14:09:35 6179 5
原创 SparkSQL编程指南之Java篇二-数据源(上)
Spark SQL通过DataFrame接口支持各种不同数据源的操作。一个DataFrame可以进行相关的转换操作,也可以用于创建临时视图。注册DataFrame为一个临时视图可以允许你对其数据执行SQL查询。本文首先会介绍使用Spark数据源加载和保存数据的一般方法,然后对内置数据源进行详细介绍。1. 一般的Load/Save方法Spark SQL最简单的也是默认的数据源格式是P
2017-03-10 11:11:41 2076
原创 SparkSQL编程指南之Java篇一-入门
1. Spark SQL的Java开发包Spark SQL提供Java的开发包,当前最新版本是2.1.0版本:spark-sql_2.11-2.1.0.jar,可以从下面链接下载:http://central.maven.org/maven2/org/apache/spark/spark-sql_2.11/2.1.0/spark-sql_2.11-2.1.0.jar或者通过
2017-02-16 14:24:29 18453
原创 Spark集群安装配置步骤
本文使用3台测试服务器,下面是各服务器的角色:- node1:Worker- node2:Worker- node3:Master, Worker1. 配置hosts文件本文使用RedHat是在 /etc/hosts,新增3台测试服务器的ip/hostname对应关系(根据服务器实际情况修改下面的值):$ vi /etc/hostsxxx.100 n
2017-02-10 13:48:23 5041
原创 Hadoop分布式集群安装配置步骤
之前介绍过Hadoop伪分布式模式的安装配置步骤,现在记录一下分布式集群的安装配置步骤,本文使用3台测试服务器,下面是各服务器的角色: - node1:NameNode, SecondaryNameNode, DataNode, NodeManager- node2:DataNode, NodeManager, ResourceManager- node3:DataNode, No
2017-02-07 16:35:10 2078
原创 java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read
环境:- Spark 2.11-2.0.2- Hadoop 2.6.5使用Spark连接HDFS,在高并发的时候,偶尔会遇到以下异常:2017-01-26 10:30:29,079 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: xxx:50010:DataXceiver error processing W
2017-02-04 10:04:07 25880
原创 Spark编程指南入门之Java篇七-共享变量
11. 共享变量通常情况下,当一个传递给Spark操作的函数(例如map或者reduce)在远程集群节点执行时,函数使用的所有变量都是原变量的副本。这些变量被复制到集群的每一台服务器,在各个远程服务器更新的变量是不会更新回驱动节点程序的。不同任务读写共享变量的效率是比较低的,然而,Spark提供了2种限制类型的共享变量,广播变量和累加器。11.1 广播变量广播变量允许编程者
2017-01-20 09:33:49 1706
原创 java.lang.NoSuchMethodError: org.apache.hadoop.fs.FSOutputSummer.<init>(Ljava/util/zip/Checksum;II)V
环境:- Spark 2.11-2.0.2版本(在Eclipse下面使用Maven引入spark-core_2.11-2.0.2.jar)- Hadoop 2.6.5版本使用Spark的Java APIs(saveAsTextFile方法)把大量的日志导入远程的HDFS,遇到下面的java.lang.NoSuchMethodError: org.apache.hadoo
2017-01-16 15:56:01 3285
原创 Spark编程指南入门之Java篇六-RDD持久化介绍
10. RDD持久化Spark其中一个重要的功能是持久化(或缓存)数据到内存。当持久化一个RDD时,每一个节点会把计算后的分区数据保存在内存里面,然后后续的操作可以直接重用内存里的数据。这样可以提高后续操作的计算速度(通常是10倍以上)。缓存是迭代算法和快速交互式使用的关键工具。RDD的持久化可以使用persist()或者cache()方法,数据会在第一次计算后缓存在各节点的内存里
2017-01-12 16:47:16 1651
原创 Spark编程指南入门之Java篇五-数据重组Shuffle介绍
9. 数据重组Shuffle介绍Spark的某些操作会触发数据重组Shuffle事件。Shuffle是Spark对各分区的数据进行重新分布的机制,是一个复杂而且代价较高的操作,因为一般需要在执行器和数据节点之间进行数据复制。9.1 背景我们可以通过reduceByKey操作的例子来理解shuffle过程。reduceByKey操作将原PairRDD中具有相同key的元素聚合
2017-01-11 15:55:46 1602 1
原创 Spark编程指南入门之Java篇四-常用Actions操作
8. 常用的Actions操作T reduce(Function2 f) 使用指定的函数f聚合数据集中的元素,该函数把数据集中的每2个元素聚合成一个,一直递归直到得出最后一个元素java.util.List collect() 以List形式返回数据集的所有元素到驱动程序节点,通常用于filter或其它返回足够少数据的操作之后long count() 返回数据集中元素的个数
2017-01-10 11:57:52 1434
原创 Spark编程指南入门之Java篇三-常用Transformations操作
7. 常用的转换Transformations操作JavaRDD map(Function f) 将数据集的每一个元素按指定的函数f转换为一个新的RDDJavaRDD filter(Function f) 对数据集中的元素进行过滤,将符合指定函数f条件的元素组成为一个新的RDDJavaRDD flatMap(FlatMapFunction f) 类似于map,但不同的是每个
2016-12-28 16:20:18 2130
原创 Spark编程指南入门之Java篇二-基本操作
4. RDD的操作4.1 基本操作RDD有2种类型的操作,一种是转换transformations,它基于一个存在的数据集创建出一个新的数据集;另一种是行动actions,它通过对一个存在的数据集进行运算得出结果。例如,map方法是转换操作,它将数据集的每一个元素按指定的函数转换为一个新的RDD;reduce方法是行动操作,它将数据集的所有元素按指定的函数进行聚合运算得出结果给驱动
2016-12-27 16:03:12 4847 2
原创 Spark编程指南入门之Java篇一-基本知识
1. Spark的Java开发包Spark提供Java的开发包,当前最新版本是2.0.2版本:spark-core_2.11-2.0.2.jar,可以从下面链接下载:http://central.maven.org/maven2/org/apache/spark/spark-core_2.11/2.0.2/spark-core_2.11-2.0.2.jar或者通过Maven
2016-12-16 16:27:38 26205 6
原创 Java7之try-with-resources语句自动关闭资源
1. 使用finally关闭资源在Java 7之前,如果要关闭一个资源的话,可以使用finally语句,不管try语句里面的代码是否正常执行完毕或出现异常,例如:static String readFirstLineFromFileWithFinallyBlock(String path) ...
2016-12-09 11:48:23 1274
原创 Hadoop伪分布式模式安装配置步骤
最近要升级Hadoop的版本,需要重新安装测试环境,特此记录一下安装配置步骤O(∩_∩)O1. 依赖软件 - Java:Hadoop 2.7及以上版本需要Java 7,之前的版本支持Java 6,本文使用Hadoop 2.6.5版本,所以安装Java 6就可以了- ssh2. 下载和解压Hadoop2.1 如果服务器可以访问公网,可以执行以下
2016-11-29 11:29:11 1716
原创 Redis的集群创建步骤(非redis-trib.rb脚本方式)
本文目的仅用于测试验证创建集群的相关步骤,所以只是采用最简单的配置在同一个服务器部署了由3个节点组成的Redis集群1. 创建集群步骤,本文使用Redis 3.2.5版本1.1 创建配置文件目录,使用的端口分别为5000,5001和5002[root@xxx ~]# cd /opt/redis-3.2.5[root@xxx redis-3.2.5]# mkdir 500
2016-11-21 15:55:42 4002 3
原创 Redis的集群指南和配置参数
本文参考了Redis的英文官方指南 http://redis.io/topics/cluster-tutorial1. 集群功能- 能够自动把数据切分到集群的各个节点- 当集群中的部分节点故障或者无法与集群通讯时,集群仍然可以继续运作2. 集群分片Redis集群使用的是一种叫哈希槽(hash slot)的分片形式,而不是一致性哈希(consist
2016-11-18 17:26:05 2197
原创 Redis的复制原理和配置参数
Redis使用的是master-slave主从复制模式,从2.8版本开始,这个过程是异步的。1. 工作原理当一个slave首次或重新连接到master的时候,会向master发送一个PSYNC命令(2.8版本之前是SYNC命令)要求同步数据。1.1 全量同步 Full resynchronization当master接收到slave的同步命令之后会执
2016-11-10 09:01:58 1578 1
原创 下载编译安装Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理
一,依赖软件: - Apache Portable Runtime (APR) 1.5.2 (大小807KB)- Apache Portable Runtime Utility (APR-Util) 1.5.4(大小678KB)- Perl-Compatible Regular Expressions Library (PCRE) 9.39 (大小1.48MB) 如果没
2016-10-24 11:40:45 5743
spark-core_2.11-1.5.2.logging.jar
2016-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人