01 2020 档案
摘要:一.关于集群的基本操作 #!/usr/bin/env python # -*- coding: utf-8 -*- # author tom from elasticsearch import Elasticsearch from pprint import pprint # 连接es,直接传一个i
阅读全文
摘要:1. 前言 在执行一些 IO 密集型任务的时候,程序常常会因为等待 IO 而阻塞。比如在网络爬虫中,如果我们使用 requests 库来进行请求的话,如果网站响应速度过慢,程序一直在等待网站响应,最后导致其爬取效率是非常非常低的。 为了解决这类问题,本文就来探讨一下 Python 中异步协程来加速的
阅读全文
摘要:设想这样一个场景: 你创建了10个子线程,每个子线程分别爬一个网站,一开始所有子线程都是阻塞等待。一旦某个事件发生:例如有人在网页上点了一个按钮,或者某人在命令行输入了一个命令,10个爬虫同时开始工作。 肯定有人会想到用Redis来实现这个开关:所有子线程全部监控Redis中名为start_craw
阅读全文
摘要:当我们在Python里面写文件时,我们常用的模式为 w模式,这种模式下,如果文件不存在,就会生成文件;如果文件已经存在,就会直接覆盖。 有时候,如果文件已经存在,直接覆盖文件可能会导致重要数据丢失。你不希望再覆盖文件,那么你可能会这样写代码: import os if os.path.exists(
阅读全文
摘要:当我们使用 Elasticsearch-py 批量插入数据到 ES 的时候,我们常常使用它的 helpers模块里面的bulk函数。其使用方法如下: from elasticsearch import helpers, Elasticsearch es = Elasticsearch(xxx) de
阅读全文
摘要:当我们使用ES批量插入数据的时候,一般会这样写代码: from elasticsearch import Elasticsearch,helpers es =Elasticsearch(hosts=[{'host':'localhost','port':9200}]) def gendata():
阅读全文
摘要:对图7-1所示的数据集exampledata1,使用聚合操作实现以下功能: (1)不返回_id字段,只返回age和sex字段。 (2)所有age大于28的记录,只返回age和sex。 (3)在$match返回的字段中,添加一个新的字段“hello”,值为“world”。 (4)在$match返回的字
阅读全文
摘要:全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。 Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene
阅读全文
摘要:Elasticsearch下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-linux-x86_64.tar.gz 解压elasticsearch-7.1.1-linux-x86_64.tar
阅读全文
摘要:1、使用工具Studio 3T for MongoDB 选择一个数据库中的Collections集合,然后按住 Ctrl+C 复制快捷键会弹出如下帮助框。 点击 Ctrl+V 粘贴快捷键,重命名一下复制的名称即可。 2、使用工具Robo 3T 在Collection中,右键选择复制Collectio
阅读全文
摘要:问题描述 对于一个大型网站,用户访问量尝尝高达数十亿。对于数十亿是一个什么样的概念,我们这里可以简单的计算一下。对于一个用户,单次访问,我们通常会记录下哪些数据呢? 1、用户的id 2、用户访问的时间 3、用户逗留的时间 4、用户执行的操作 5、用户的其余数据(比如IP等等) 我们单单从用户id来说
阅读全文
摘要:Spark的intersection intersection顾名思义,他是指交叉的。当两个RDD进行intersection后,将保留两者共有的。因此对于RDD1.intersection(RDD2) 和RDD2.intersection(RDD1) 。应该是一致的。 比如对于,List1 = {
阅读全文
摘要:spark的combineByKey combineByKey的特点 combineByKey的强大之处,在于提供了三个函数操作来操作一个函数。第一个函数,是对元数据处理,从而获得一个键值对。第二个函数,是对键值键值对进行一对一的操作,即一个键值对对应一个输出,且这里是根据key进行整合。第三个函数
阅读全文
摘要:reduce和reduceByKey的区别 reduce和reduceByKey是spark中使用地非常频繁的,在字数统计中,可以看到reduceByKey的经典使用。那么reduce和reduceBykey的区别在哪呢?reduce处理数据时有着一对一的特性,而reduceByKey则有着多对一的
阅读全文
摘要:spark的RDD操作 在上一节Spark经典的单词统计中,了解了几个RDD操作,包括flatMap,map,reduceByKey,以及后面简化的方案,countByValue。那么这一节将介绍更多常用的RDD操作,并且为每一种RDD我们分解来看其运作的情况。 spark的flatMap flat
阅读全文
摘要:spark经典之单词统计 准备数据 既然要统计单词我们就需要一个包含一定数量的文本,我们这里选择了英文原著《GoneWithTheWind》(《飘》)的文本来做一个数据统计,看看文章中各个单词出现频次如何。为了便于大家下载文本。可以到GitHub上下载文本以及对应的代码。我将文本放在项目的目录下。
阅读全文
摘要:用Idea搭建我们的Spark环境 用IDEA搭建我们的环境有很多好处,其中最大的好处,就是我们甚至可以在工程当中直接运行、调试我们的代码,在控制台输出我们的结果。或者可以逐行跟踪代码,了解spark运行的机制。因此我们选择了idea,当然Idea不是首选,当然也可以用其他工具。因为我们的Spark
阅读全文
摘要:Spark-Shell的使用 执行scala命令的spark-shell 进入spark的sbin目录,打开键入 ./spark-shell 即可进入spark-shell的目录 spark-shell运行过程从上层来看,每一个spark应用都是由驱动器程序发起集群上的并行操作,在spark-she
阅读全文
摘要:Spark的分布式架构 如我们所知,spark之所以强大,除了强大的数据处理功能,另一个优势就在于良好的分布式架构。举一个例子在Spark实战--寻找5亿次访问中,访问次数最多的人中,我用四个spark节点去尝试寻找5亿次访问中,次数最频繁的ID。这一个过程耗时竟然超过40分钟,对一个程序来说,40
阅读全文
摘要:首先需要安装Java 下载安装并配置Spark 从官方网站Download Apache Spark™下载相应版本的spark,因为spark是基于hadoop的,需要下载对应版本的hadoop才行,这个页面有对hadoop的版本要求,点击Download Spark: spark-2.3.1-bi
阅读全文
摘要:mongodb导入大文件的数据时,导入一小部分后,提示lost connect,失去连接。mongo文件有6.3G,网上查了一下,原来Mongo对单次处理好像有大小限制(16m),所以大文件会出问题,这应该是个Bug mongoimport 默认会10000条 为一个批量导入数据,解决方法是在导入的
阅读全文
摘要:no_cursor_timeout=True参数的使用 默认拿到cursor后,十分钟内不取数倨或者十分钟内每把数据取完,再继续取,会有timeout的的报错(所以针对取了数据做了很耗时的操作,在这边最好加上这个参数) 实例: import pymongo handler = pymongo.Mon
阅读全文
摘要:实例: with codecs.open(file=源文件,mode='命令',encoding='编(解)码方式') as 命名:
阅读全文
摘要:MongoDB 版本 v4.0.7 系统 Win10 注意: 要为数据库创建用户,必须先切换到相应的数据库: 要为数据库创建用户,必须先切换到相应的数据库: 要为数据库创建用户,必须先切换到相应的数据库: #先切换 use 数据库名; #再创建 db.createUser({}) 超级管理员 设置
阅读全文