使用python爬虫的时候怎么爬取数据,爬取哪些数据,爬去之后用来进行做什么样的业务。
通过分析要爬取的网页请求,和请求的返回数据类型,如果是html页面,那么就去通过BeautifulSoup等XML解析工具去解析,如果是JSON数据,那么直接进行转换成字典分析
,要爬取的数据是关键的数据,比如爬取全北京的各个房地产房源的房价信息,爬取出来之后分析各个地区的房价信息,然后进行有战略性的开展新房源的销售
数据处理的整个流程,使用什么分析手段,hadoop和spark的对比。使用的场景
数据处理的整个流程
1.数据采集
了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。这会帮助数据分析师更有针对性的控制数据生产和采集过程,避免由于违反数据采集规则导致的数据问题;同时,对数据采集逻辑的认识增加了数据分析师对数据的理解程度,尤其是数据中的异常变化。
在数据采集阶段,数据分析师需要更多的了解数据生产和采集过程中的异常情况,如此才能更好的追本溯源。另外,这也能很大程度上避免“垃圾数据进导致垃圾数据出”的问题。
2.数据的加工整理
在明确数据分析目标基础上收集到的数据,往往还需要进行必要的加工整理后才能真正用于分析建模。数据的加工整理通常包括数据缺失值处理、数据的分组、基本描述统计量的计算、基本统计图形的绘制、数据取值的转换、数据的正态化处理等,它能够帮助人们掌握数据的分布特征,是进一步深入分析和建模的基础。
3.数据分析
数据分析相对于数据挖掘更多的是偏向业务应用和解读,当数据挖掘算法得出结论后,如何解释算法在结果、可信度、显著程度等方面对于业务的实际意义,如何将挖掘结果反馈到业务操作过程中便于业务理解和实施是关键。
4.数据展现
数据展现即数据可视化的部分,数据分析师如何把数据观点展示给业务的过程。数据展现除遵循各公司统一规范原则外,具体形式还要根据实际需求和场景而定。基本素质要求如下:
工具:PPT、Excel、Word甚至邮件都是不错的展现工具,任意一个工具用好都很强大。
形式:图文并茂的基本原则更易于理解,生动、有趣、互动、讲故事都是加分项。
原则:领导层喜欢读图、看趋势、要结论,执行层欢看数、读文字、看过程。
场景:大型会议PPT最合适,汇报说明Word最实用,数据较多时Excel更方便。
最重要一点,数据展现永远辅助于数据内容,有价值的数据报告才是关键。
hadoop和spark的对比
Spark没有文件管理功能,因而必须依赖Hadoop分布式文件系统(HDFS)或另外某种解决方案。
Hadoop框架的主要模块包括如下:
- Hadoop Common
- Hadoop分布式文件系统(HDFS)
- Hadoop YARN
- Hadoop MapReduce
虽然上述四个模块构成了Hadoop的核心,不过还有其他几个模块。这些模块包括:Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume和Sqoop,它们进一步增强和扩展了Hadoop的功能。
Spark确实速度很快(最多比Hadoop MapReduce快100倍)。Spark还可以执行批量处理,然而它真正擅长的是处理流工作负载、交互式查询和机器学习。
相比MapReduce基于磁盘的批量处理引擎,Spark赖以成名之处是其数据实时处理功能。Spark与Hadoop及其模块兼容。实际上,在Hadoop的项目页面上,Spark就被列为是一个模块。
Spark有自己的页面,因为虽然它可以通过YARN(另一种资源协调者)在Hadoop集群中运行,但是它也有一种独立模式。它可以作为 Hadoop模块来运行,也可以作为独立解决方案来运行。
MapReduce和Spark的主要区别在于,MapReduce使用持久存储,而Spark使用弹性分布式数据集(RDDS)。
性能
Spark之所以如此快速,原因在于它在内存中处理一切数据。没错,它还可以使用磁盘来处理未全部装入到内存中的数据。
Spark的内存处理为来自多个来源的数据提供了近乎实时分析的功能:营销活动、机器学习、物联网传感器、日志监控、安全分析和社交媒体网站。另外,MapReduce使用批量处理,其实从来就不是为惊人的速度设计的。它的初衷是不断收集来自网站的信息,不需要这些数据具有实时性或近乎实时性。
易用性
支持Scala(原生语言)、Java、Python和Spark SQL。Spark SQL非常类似于SQL 92,所以几乎不需要经历一番学习,马上可以上手。
Spark还有一种交互模式,那样开发人员和用户都可以获得查询和其他操作的即时反馈。MapReduce没有交互模式,不过有了Hive和Pig等附加模块,采用者使用MapReduce来得容易一点。
成本
“Spark已证明在数据多达PB的情况下也轻松自如。它被用于在数量只有十分之一的机器上,对100TB数据进行排序的速度比Hadoop MapReduce快3倍。”这一成绩让Spark成为2014年Daytona GraySort基准。
兼容性
MapReduce和Spark相互兼容;MapReduce通过JDBC和ODC兼容诸多数据源、文件格式和商业智能工具,Spark具有与MapReduce同样的兼容性。
数据处理
MapReduce是一种批量处理引擎。MapReduce以顺序步骤来操作,先从集群读取数据,然后对数据执行操作,将结果写回到集群,从集群读取更新后的数据,执行下一个数据操作,将那些结果写回到结果,依次类推。Spark执行类似的操作,不过是在内存中一步执行。它从集群读取数据后,对数据执行操作,然后写回到集群。
Spark还包括自己的图形计算库GraphX。GraphX让用户可以查看与图形和集合同样的数据。用户还可以使用弹性分布式数据集(RDD),改变和联合图形,容错部分作了讨论。
容错
至于容错,MapReduce和Spark从两个不同的方向来解决问题。MapReduce使用TaskTracker节点,它为 JobTracker节点提供了心跳(heartbeat)。如果没有心跳,那么JobTracker节点重新调度所有将执行的操作和正在进行的操作,交 给另一个TaskTracker节点。这种方法在提供容错性方面很有效,可是会大大延长某些操作(即便只有一个故障)的完成时间。
Spark使用弹性分布式数据集(RDD),它们是容错集合,里面的数据元素可执行并行操作。RDD可以引用外部存储系统中的数据集,比如共享式文件系统、HDFS、HBase,或者提供Hadoop InputFormat的任何数据源。Spark可以用Hadoop支持的任何存储源创建RDD,包括本地文件系统,或前面所列的其中一种文件系统。
RDD拥有五个主要属性:
- 分区列表
- 计算每个分片的函数
- 依赖其他RDD的项目列表
- 面向键值RDD的分区程序(比如说RDD是散列分区),这是可选属性
- 计算每个分片的首选位置的列表(比如HDFS文件的数据块位置),这是可选属性
RDD可能具有持久性,以便将数据集缓存在内存中。这样一来,以后的操作大大加快,最多达10倍。Spark的缓存具有容错性,原因在于如果RDD的任何分区丢失,就会使用原始转换,自动重新计算。
可扩展性
按照定义,MapReduce和Spark都可以使用HDFS来扩展。那么,Hadoop集群能变得多大呢?
据称雅虎有一套42000个节点组成的Hadoop集群,可以说扩展无极限。最大的已知Spark集群是8000个节点,不过随着大数据增多,预计集群规模也会随之变大,以便继续满足吞吐量方面的预期。
安全
Hadoop支持Kerberos身份验证,这管理起来有麻烦。然而,第三方厂商让企业组织能够充分利用活动目录Kerberos和LDAP用于身份验证。同样那些第三方厂商还为传输中数据和静态数据提供数据加密。
Hadoop分布式文件系统支持访问控制列表(ACL)和传统的文件权限模式。Hadoop为任务提交中的用户控制提供了服务级授权(Service Level Authorization),这确保客户拥有正确的权限。
Spark的安全性弱一点,目前只支持通过共享密钥(密码验证)的身份验证。Spark在安全方面带来的好处是,如果你在HDFS上运行Spark,它可以使用HDFS ACL和文件级权限。此外,Spark可以在YARN上运行,因而能够使用Kerberos身份验证。
总结
Spark与MapReduce是一种相互共生的关系。Hadoop提供了Spark所没有的功能特性,比如分布式文件系统,而Spark 为需要它的那些数据集提供了实时内存处理。完美的大数据场景正是设计人员当初预想的那样:让Hadoop和Spark在同一个团队里面协同运行。
python爬取好数据后存放在哪里,使用什么技术进行数据清洗
python的数据存入redis或者hive,hbase,清洗的话可以通过python的正则表达式进行清洗脏数据,可以通过hive清洗
使用过什么样的数据清洗工具,使用hive清洗过吗。
hive数据表的数据清洗,hive中的查询都是基于map-reduce,一般向hive中导入数据的方式主要有四种:1 将本地的文件内容导入到hive中,2:将HDFS系统中的文件导入到hive表中,3:从别的表中查询出数据导入到表中。今天分享一下用map-reduce做数据清理并且将HDFS的文件导入到hive表中的操作,首先我所统计的信息中的字段user_id和subject_id在hive表中是明显错误的,subject_id是类似于““22000000”,user_id是类似于“30”这样的,我们获得字段信息是在日志信息中用tab来分割提取的,由于日志分割的错误,我们很可能得到错误的信息存到hive表中。我们处理的最开始的日志是ct_show日志,这个日志包含了很多信息,每一个日志有自己的唯一ssid,我们根据这个ssid来关联两个小时内的其他动作的log文件,比如说是click或是download,然后统计信息,存到我们的hive的表中。我们的代码是用sh脚本运行,在sh脚本中嵌入了运行map-reduce的jar包。我们在java代码里面做了一些条件过滤,然后用maven来clean和install一下,来生成jar包,放到sh脚本的指定目录下面进行执行。最后就静静的等着map和reduce了。我的方法就是,不做清洗,重新再代码里写过滤条件,然后在重新导入一遍。