自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

洪远的博客

博主QQ:592070616 | 交流QQ群:27101048

  • 博客(56)
  • 论坛 (5)
  • 收藏
  • 关注

原创 博客目录与概览

从即日起,我将开始开始着手写作《深入理解机器学习》分类下的文章。《深入理解机器学习》不仅仅把目光局限机器学习算法的推导与实现,更多的会将目光聚焦于从数学、统计学以及统计学习的角度来深入理解机器学习算法,除此之外,我还会讨论各个机器学习算法局限与瓶颈,纵横向比较各种机器学习算法的优劣等。在详细介绍机器学习算法的同时,我还会通过Python和Scala给出相关项目的实战代码。所以,想深入学习机器学习的...

2019-08-31 10:18:26 297181 7

原创 维度建模——数据仓库初步

本文是《维度建模》后续文章的基础。我们首先从宏观层面上考察数据仓库和商业智能(Data Warehousing and Business Intelligence,DW/BI)系统。DW/BI系统首先应该仔细考虑的问题是业务需求。《维度建模》系列文章将紧紧抓住业务需求这一要点,逐步深入探讨逻辑设计、物理设计以及采用有关技术和工具的决策等问题。本文将详细考察数据仓库及商业智能的主要目标,辨析DW/...

2019-11-19 21:32:14 266

原创 数据仓库Hive编程——HiveQL的数据操作(一):向管理表中装载数据

既然Hive没有行级别的数据插入、数据更新和删除操作,那么往表中装载数据的唯一途径就是使用一种“大量”的数据装载操作。或者通过其他方式仅仅将文件写入到正确的目录下。在第4.4节“分区表、管理表”中我们已经看到了一个如何装载数据到管理表中的例子,这里我们稍微对其增加些内容重新进行展示。我们新增了一个关键字OVERWRITE:LOAD DATA LOCAL INPATH '${env:HOME}/...

2019-09-26 20:22:31 184

原创 维度建模——维度建模与数据仓库概述

分类目录:商业智能《维度建模》总目录数据仓库和商业智能(Data Warehousing and Business Intelligence,DW/BI)行业渐趋成熟。尽管初期仅有部分大型公司采用,但从那时起,DW/BI逐渐为各种规模的公司所青睐。业界已建立了数以千计的DW/BI系统。随着数据仓库原子数据的不断增加以及更新越来越频繁,数据容量不断增长。在我们的职业生涯中,我们见证了数据库容量从M...

2019-08-28 20:31:14 319

原创 数据仓库Hive编程——HiveQL的数据定义(六):修改表

大多数的表属性可以通过ALTER TABLE语句来进行修改。这种操作会修改元数据,但不会修改数据本身。这些语句可用于修改表模式中出现的错误、改变分区路径,以及其他一些操作。ALTER TABLE仅仅会修改表元数据,表数据本身不会有任何修改。需要用户自己确认所有的修改都和真实的数据是一致的。表重命名使用以下这个语句可以将表log_messages重命名为logmsgs:ALTER TABLE...

2019-08-08 20:07:43 10264

原创 数据仓库Hive编程——HiveQL的数据定义(五):删除表

Hive支持和SQL中DROP TABLE命令类似的操作:DROP TABLE IF EXISTS employees;可以选择是否使用IF EXITST关键字。如果没有使用这个关键字而且表并不存在的话,那么将会抛出一个错误信息。对于管理表,表的元数据信息和表内的数据都会被删除。事实上,如果用户开启了Hadoop回收站功能(这个功能默认是关闭的),那么数据将会被转移到用户在分布式文件系统中...

2019-08-08 20:07:18 13159

原创 数据仓库Hive编程——HiveQL的数据定义(四):分区表和管理表

数据分区的一般概念存在已久。其可以有多种形式,但是通常使用分区来水平分散压力,将数据从物理上转移到和使用最频繁的用户更近的地方,以及实现其他目的。Hive中有分区表的概念。我们可以看到分区表具有重要的性能优势,而且分区表还可以将数据以一种符合逻辑的方式进行组织,比如分层存储。我们首先会讨论下分区管理表。重新来看《数据仓库Hive编程》中前面几篇文章日到的的那张emplyees表并假设我们在一个...

2019-08-08 20:06:44 13083

原创 数据仓库Hive编程——HiveQL的数据定义(三):创建表

CREATE TABLE语句遵从SQL语法惯例,但是Hive的这个语句中具有显著的功能扩展,使其可以具有更广泛的灵活性。例如,可以定义表的数据文件存储在什么位置、使用什么样的存储格式,等等。前面的文章我们在”中已经讨论了很多种存储格式,同时在后续的文章中我们将会再次探讨一下更加高级的格式。本文中,我们会讨论其他一些在CREATE TABLE...

2019-08-08 20:06:13 12949

原创 数据仓库Hive编程——HiveQL的数据定义(二):修改数据库

用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置:hive> ALTER DATABASE financials SET DBPROPERTIES ('edited-by' = 'Joe Dba');同时,当前也没有办法可以删除或者“重...

2019-08-08 20:05:27 13001

原创 数据仓库Hive编程——HiveQL的数据定义(一):Hive中的数据库

HiveQL是Hive查询语言。和普遍使用的所有SQL方言一样,它不完全遵守任一种ANSI SQL标准的修订版。HiveQL可能和MySQL的方言最接近,但是两者还是存在显著性差异的。Hive不支持行级插入操作、更新操作和删除操作。Hive也不支持事务。Hive增加了在Hadoop背景下的可以提供更高性能的扩展,以及一些个性化的扩展,甚至还增加了一些外部程序。《HiveQL的数据定义》的内容是H...

2019-08-08 20:04:46 19260

原创 数据仓库Hive编程——数据类型和文件格式(四):读时模式

当用户向传统数据库中写入数据的时候,不管是采用装载外部数据的方式,还是采用将一个查询的输出结果写入的方式,或者是使用UPDATE语句等等,数据库对于存储都具有完全的控制力。数据库就是“守门人”。传统数据库是写时模式(schema on write),即数据在写入数据库时对模式进行检查。Hive对底层存储并没有这样的控制。对于Hive要查询的数据,有很多种方式对其进行创建、修改,甚至损坏。因此,H...

2019-07-31 20:28:48 12132

原创 数据仓库Hive编程——数据类型和文件格式(三):文本文件数据编码

分类目录:商业智能《数据仓库Hive编程》总目录下面我们一起来研究文件格式,首先举个最简单的例子,也就是文本格式文件。毫无疑问,用户应该很熟悉以逗号或者制表符分割的文本文件,也就是所谓的逗号分隔值(CSV)或者制表符分割值(TSV)。只要用户需要,Hive是支持这些文件格式的,在后面的文章将会介绍其具体使用方式。然而,这两种文件格式有一个共同的缺点,那就是用户需要对文本文件中那些不需要作为分隔符...

2019-07-31 20:11:23 11642

原创 数据仓库Hive编程——数据类型和文件格式(二):集合数据类型

分类目录:商业智能《数据仓库Hive编程》总目录相关文章:数据类型和文件格式(一):基本数据类型数据类型和文件格式(二):集合数据类型数据类型和文件格式(三):文本文件数据编码数据类型和文件格式(四):读时模式Hive中的列支持使用struct,map和array集合数据类型。需要注意的是下表中语法示例实际上调用的是内置函数。数据类型描述字面语法示例STRUCT...

2019-07-31 20:08:33 11306

原创 数据仓库Hive编程——数据类型和文件格式(一):基本数据类型

分类目录:商业智能《数据仓库Hive编程》总目录Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型,其中一个需要考虑的因素就是这些数据类型是如何在文本文件中进行表示的,同时还要考虑文本存储中为了解决各种性能问题以及其他问题有哪些替代方案。和大多数的数据库相比,Hive具有一个独特的功能,那就是其对于数据在文件中的编码方式具有非常大的灵活性。大多数...

2019-07-31 19:49:36 11796

原创 数据仓库Hive编程——Hive基础知识

从早期的互联网主流大爆发开始,主要的搜索引擎公司和电子商务公司就一直在和不断增长的数据进行较量。最近,社交网站也遇到了同样的问题。如今,许多组织已经意识到他们所收集的数据是让他们了解他们的用户,提高业务在市场上的表现以及提高基础架构效率的一个宝贵的资源。Hadoop生态系统就是为处理如此大数据集而产生的一个合乎成本效益的解决方案。Hadoop实现了一个特别的计算模型,也就是MapReduce,其...

2019-07-29 19:20:30 19779 4

原创 Python爬虫从入门到精通——高级框架Selenium的使用(二):节点操作

分类目录:《Python爬虫从入门到精通》总目录在《高级框架Selenium的使用(一):基础知识》中我们了解了利用Selenium框架声明浏览器对象、访问页面等操作。事实上,Selenium可以同解析库XPath、BeautifulSoup、pyquery等等一样,对HTML进行解析。除此之外,Selenium还可以驱动浏览器完成各种操作,本文就阐述下Selenium的节点操作,后续的文章会继...

2019-06-26 18:25:17 11134

原创 Python爬虫从入门到精通——高级框架Selenium的使用(一):基础知识

分类目录:《Python爬虫从入门到精通》总目录在《Ajax数据爬取》中,我们了解了Ajax的分析和抓取方式,这其实也是JavaScript动态渲染的页面的一种情形,通过直接分析Ajax,我们仍然可以借助requests或urllib来实现数据爬取。不过JavaScript动态渲染的页面不止Ajax这一种,很多网站的分页部分是由JavaScript生成的,并非原始HTML代码,这其中并不包含A...

2019-06-26 16:54:16 11608

原创 Python爬虫从入门到精通——爬虫实战:爬取今日头条图片新闻

分类目录:《Python爬虫从入门到精通》总目录本文为实战篇,需提前学习Python爬虫从入门到精通中《基本库requests的使用》和《Ajax数据爬取(一):基本原理》、《Ajax数据爬取(二):分析方法》和《Ajax数据爬取(三):结果提取》的内容。在抓取之前,首先要分析抓取的逻辑。打开今日头条的首页,并在右上角有搜索入口搜索“图片新闻”。这时打开开发者工具,查看所有的网络请求。首先...

2019-06-24 20:45:22 14516 2

原创 Python爬虫从入门到精通——爬虫实战:爬取新浪微博内容

分类目录:《Python爬虫从入门到精通》总目录本文为实战篇,需提前学习《Python爬虫从入门到精通》中基本库requests的使用和Ajax数据爬取(一):基本原理、Ajax数据爬取(二):分析方法和Ajax数据爬取(三):结果提取的内容。这里我们用程序模拟这些Ajax请求,将我的前10页微博全部爬取下来。首先,定义一个方法来获取每次请求的结果。在请求时,page是一个可变参数,所以我们...

2019-06-24 16:19:51 19387 2

原创 Python爬虫从入门到精通——Ajax数据爬取(三):结果提取

分类目录:《Python爬虫从入门到精通》总目录这里还以《Python爬虫从入门到精通——Ajax数据爬取(一):基本原理》中的微博为例,接下来用Python来模拟这些Ajax请求,把马云微博内容爬取下来。分析请求打开Ajax的XHR过滤器,然后一直滑动页面以加载新的微博内容。可以看到,会不断有Ajax请求发出。选定其中一个请求,分析它的参数信息。点击该请求,进入详情页面。可以发现,这...

2019-06-24 15:58:35 15610 2

原创 Python爬虫从入门到精通——Ajax数据爬取(二):分析方法

分类目录:《Python爬虫从入门到精通》总目录这里还以《Python爬虫从入门到精通——Ajax数据爬取(一):基本原理》中的微博为例,我们知道拖动刷新的内容由Ajax加载,而且页面的URL没有变化。查看请求这里还需要借助浏览器的开发者工具,下面以Chrome浏览器为例来介绍。首先,用Chrome浏览器打开微博的链接,随后在页面中点击鼠标右键,从弹出的快捷菜单中选择“检查”选项,此时便会弹...

2019-06-24 14:53:33 13892

原创 Python爬虫从入门到精通——Ajax数据爬取(一):基本原理

分类目录:《Python爬虫从入门到精通》总目录有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用requests得到的结果并没有。这是因为requests获取的都是原始的HTML文档,而浏览器中的页面则是经过JavaScript处理数据后生成的结果,这些数据的来源有多种,可能是通过Ajax加载的,可能是包含在HT...

2019-06-24 14:24:49 14705

原创 算法设计与分析——算法学基础(三):渐进记号

分类目录:《算法设计与分析》总目录第《算法学基础(二):分析算法》中定义了算法运行时间的增长量级简单地刻画了算法效率,并且还允许我们比较可选算法的相对性能。一旦输入规模nnn变得足够大,最坏情况运行时间为Θ(nlg⁡n)\Theta(n\lg{n})Θ(nlgn)的归并排序将战胜最坏情况运行时间为Θ(n2)\Theta(n^2)Θ(n2)的插入排序。正如我们在分析插入排序时所做的工作,虽然有时我...

2019-06-19 21:00:53 17705

原创 算法设计与分析——分治策略(一):基础知识

分类目录:《算法设计与分析》总目录许多有用的算法在结构上是递归的:为了解决一个给定的问题,算法一次或多次递归地调用其自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。分治模式在每层递归时都有三个步骤:分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。解...

2019-06-13 16:29:47 13675

原创 算法设计与分析——排序算法(二):归并排序

归并排序算法完全遵循分治模式。直观上其操作如下:分解:分解待排序的n个元素的序列成各具n/2个元素的两个子序列。解决:使用归并排序递归地排序两个子序列。合并:合并两个已排序的子序列以产生已排序的答案。当待排序的序列长度为1时,递归“开始回升”,在这种情况下不要做任何工作,因为长度为1的每个序列都已排好序。归并排序算法的关键操作是“合并”步骤中两个已排序序列的合并。我们通过调用一个辅助过...

2019-06-11 20:58:02 17163

原创 算法设计与分析——算法学基础(二):分析算法

分类目录:《算法设计与分析》总目录分析算法的结果意味着预测算法需要的资源。虽然有时我们主要关心像内存、通信带宽或计算机硬件这类资源,但是通常我们想度量的是计算时间。一般来说,通过分析求解某个问题的几种候选算法,我们可以选出一种最有效的算法。这种分析可能指出不止一个可行的候选算法,但是在这个过程中,我们往往可以抛弃几个较差的算法。在能够分析一个算法之前,我们必须有一个要使用的实现技术的模型,包括...

2019-06-11 15:56:41 12047

原创 算法设计与分析——排序算法(一):插入排序

分类目录:《算法设计与分析》总目录插入排序对于少量元素的排序是一个有效的算法。插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,而拿在手上的牌总是排序好的。对于插入排序,我们将其伪代码过程命名为INSERTION-SORT,其中的参...

2019-06-10 21:54:07 13236

原创 算法设计与分析——算法学基础(一):算法学概述

分类目录:《算法设计与分析》总目录算法定义的是计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。我们也可以把算法看成是用于求解良说明的计算问题的工具。一般来说,问题陈述说明了期望的输入/输出关系。算法则描述一个特定的计算过程来实现该输入/输出关系。例如,我们可能需要把一个数列排成非递减序。实际上,这个问题经常出现,并且为...

2019-06-10 19:34:17 12278

原创 Python爬虫从入门到精通——解析库pyquery的使用

分类目录:《Python爬虫从入门到精通》总目录在《解析库Beautiful Soup的使用》中,我们介绍了Beautiful Soup的用法,它是一个非常强大的网页解析库,但如果你对Web有所涉及,如果你比较喜欢用CSS选择器,如果你对jQuery有所了解,那么这里有一个更适合你的解析库——pyquery。pyquery初始化像Beautiful Soup一样,初始化pyquery的时候,...

2019-06-06 15:05:34 11694

原创 Python爬虫从入门到精通——解析库Beautiful Soup的使用

分类目录:《Python爬虫从入门到精通》总目录在《解析库re的使用:正则表达式》中介绍了正则表达式的相关用法,但是一旦正则表达式写的有问题,得到的可能就不是我们想要的结果了。而且对于一个网页来说,都有一定的特殊结构和层级关系,而且很多节点都有id或class来作区分,所以我们也可以借助它们的结构和属性来提取。本文就来介绍一个强大的解析工具Beautiful Soup,它借助网页的结构和属性等特...

2019-06-03 19:41:12 13889

原创 Python爬虫从入门到精通——解析库XPath的使用

分类目录:《Python爬虫从入门到精通》总目录在《爬取猫眼电影排行Top100》中我们用requests和正则表达式实现了一个最基本的爬虫。但提取页面信息时使用的是正则表达式比较烦琐,而且万一有地方写错了,可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便。而对于网页的节点来说,它可以定义id、class或其他属性。而且节点之间还有层次关系,在网页中可以通过XPath或CS...

2019-05-28 20:16:03 19616

原创 Python爬虫从入门到精通——爬虫实战:爬取猫眼电影排行Top100

本文为实战篇,需提前学习[《Python爬虫从入门到精通》基本库requests的使用和正则表达式的内容。我们需要抓取的目标为猫眼电影-榜单-TOP100榜,其地址为:[https://maoyan.com/board/4](https://maoyan.com/board/4)。我们希望爬取各个电影的排名、名称、主演、上映时间、上映地区等信息。最后保存为一张Excel表格。

2019-05-26 17:11:24 25288 2

原创 Python爬虫从入门到精通——解析库re的使用:正则表达式

分类目录:《Python爬虫从入门到精通》总目录正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。对于爬虫,基于正则表达式,从HTML里提取想要的信息就非常方便了。正则表达式有特定的语法规则的。写好正则表达式后,就可以拿它去一个长字符串里匹配查找了。不论这个字符串里面有什么,只要符合我们写的规则,统统可以找出来。对于网页来说,如果想找...

2019-05-22 22:31:49 37652 14

原创 Python爬虫从入门到精通——请求库requests的使用(二):高级用法

分类目录:《Python爬虫从入门到精通》总目录在《基本库requests的使用(一):基本用法》中,我们了解了requests的基本用法,如基本的GET、POST请求以及Response对象。在本文中,我们来了解下requests的一些高级用法,如文件上传、Cookies设置、代理设置等。文件上传我们知道requests可以模拟提交一些数据。假如有的网站需要上传文件,我们也可以用它来实现,...

2019-05-20 17:02:36 35161 2

原创 Python爬虫从入门到精通——请求库requests的使用(一):基本用法

分类目录:《Python爬虫从入门到精通》总目录在《基本库Urllib的使用》中,我们了解了urllib的基本用法,但是其中确实有不方便的地方,比如处理网页验证和Cookies时,需要写Opener和Handler来处理。为了更加方便地实现这些操作,就有了更为强大的库requests,有了它,Cookies、登录验证、代理设置等操作都不是事儿。urllib库中的urlopen()方法实际上是以...

2019-05-16 16:37:16 39676

原创 Python爬虫从入门到精通——请求库Urllib的使用(四):Robots协议

分类目录:《Python爬虫从入门到精通》总目录利用urllib的robotparser模块,我们可以实现网站Robots协议的分析。Robots协议也称作爬虫协议、机器人协议,它的全名叫作网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。它通常是一个叫作“robots.txt”的文本文件,一般放在网站的根目录下。当...

2019-05-08 20:24:09 56626

原创 Python爬虫从入门到精通——请求库Urllib的使用(三):解析链接

分类目录:《Python爬虫从入门到精通》总目录在《基本库Urllib的使用(一):发送请求》文章中提到,urllib库里还提供了parse模块,它定义了处理URL的标准接口,例如实现URL各部分的抽取、合并以及链接转换。它支持如下协议的URL处理:file、ftp、gopher、hd、http、https、imap、mailto、mms、news、nntp、prospero、rsync、rts...

2019-05-08 16:59:07 55565

原创 Python爬虫从入门到精通——请求库Urllib的使用(二):处理异常

分类目录:《Python爬虫从入门到精通》总目录在《基本库Urllib的使用(一):发送请求》文章中,我们了解了请求的发送过程,但是在网络不好的情况下,如果出现了异常,该怎么办呢?这时如果不处理这些异常,程序很可能因报错而终止运行,所以异常处理还是十分有必要的。urllib的error模块定义了由request模块产生的异常。如果出现了问题,request模块便会抛出error模块中定义的异常...

2019-05-08 12:15:16 50309

原创 Python爬虫从入门到精通——请求库Urllib的使用(一):发送请求

分类目录:《Python爬虫从入门到精通》总目录在Python2中,有urllib和urllib2两个库来实现请求的发送。而在Python3中,已经不存在urllib2这个库了,统一为urib,其官方文档链接为:https:/docs.python.org/3/library/urlib.html。首先,了解一下urllib库,它是Python内置的HTTP请求库,也就是说不需要额外安装即可使...

2019-05-05 21:52:24 48316

原创 Python爬虫从入门到精通——爬虫基础(五):代理基本原理

分类目录:《Python爬虫从入门到精通》总目录我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阀值,就会...

2019-05-05 13:50:00 54800

空空如也

洪远的留言板

发表于 2020-01-02 最后回复 2020-01-02

CSDN博客每周排行榜没了吗?

发表于 2019-03-14 最后回复 2019-08-01

想问一下为什么会被转成私密文章

发表于 2019-06-25 最后回复 2019-06-25

CSDN博客评论数好像不对呀?

发表于 2019-05-27 最后回复 2019-06-05

对于博客自定义域名的疑问

发表于 2019-05-22 最后回复 2019-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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