您现在的位置是:主页 > 美股股指 >
利用大数据技术分析新浪财经美股行情
2022-02-17 17:33美股股指 人已围观
简介利用大数据技术分析新浪财经美股行情 进修大数据技艺有一段期间了,之前也写过少少零零星散的博客,行为己方进修的少少记载,可是每篇博客都只是涵盖一面技艺。这回思写一篇对...
利用大数据技术分析新浪财经美股行情进修大数据技艺有一段期间了,之前也写过少少零零星散的博客,行为己方进修的少少记载,可是每篇博客都只是涵盖一面技艺。这回思写一篇对照完好的博客,记载一个完好的项目从头至尾临蓐的经过,也是对己方进修的一个总结
一条是离线解决。爬虫爬到股票数据后,先交给 Map Reduce 洗刷一下,天生花样化的数据,然后倒入 hive 举办阐述,之后交给 sqoop 导出至 mysql 并用 echarts 可视化展示
另一条是及时解决。爬虫从来爬取数据,flume 监控爬虫趴下来的文献所正在目次,并络续传送给 kafka,spark streaming 会按期从 kafka 那里拿到数据,及时阐述并将数据保全到 mysql,结尾可视化。
F12,翻开开拓者用具,采取 network 面板,F5 改进页面,找到股票的 json 数据的 api 接口。
差异的网站寻找 api 接口的式样不太相似,给行家一个小诀窍,大凡的接口都是 xhr 或 script 类型,况且它的 url 后面大凡都邑随着一个 page 参数,代外着这是第几页
这里可能看到返回的数据不是规范的 json 花样,前面随着一串IO.XSRV2.CallbackList[QGNtUNkM_FleaeT1],况且咱们也可能正在 url 内部看到这一串字符,现正在正在 url 里他删掉,结果就造成了下面如许子。
现正在数据的花样基础规范了,只可是最前面众了两对小括号,咱们正在会正在爬虫序次内部去掉它。凭据上面拿到的的 url ,着手编写咱们的爬虫。
爬虫序次我写了两种计划,一种是用 python 讲话写的;另有一种是应用 java 讲话竣工的 webmagic 框架写的,因为篇幅题目,python 的计划就不正在这篇博客内部采用了,此后可以会单开一篇博客先容 python 版的股票爬虫。
正在 eclipse 内部新筑一个 Java Project,正在工程根目次下新筑一个文献夹,将依赖包解压至文献夹中,全选之后增添到 Build Path
最先修建要恳求的 Site ,这里提防一点,代码最上面的) 内部的这个.cn 即是下图中的 Host,同时也是爬虫序次下载的网页所存放的目次
爬虫运转收场后,会不才面天生很众 json 文献,查看某一个文献,可能看到内部的 json 字符串。
接下来咱们把这些文献上传到 hdfs 上面,然后着手编写 MapReduce 序次洗刷脏数据
数据洗刷从名字上也看的出即是把“脏”的数据“洗掉”,指呈现并更改数据文献中可识此外差池的结尾一道序次,搜罗反省数据相似性,解决无效值和缺失值等。
这里咱们把 json 花样的数据最终洗成可能直接导入 hive 的以 \t 为分开符文本花样。况且 json 数据中有的字段会有缺失的地步显现,因而咱们还要加添空值,坚持数据的相似性
然后新筑一个外部外 stock ,之因而新筑一个外部外,是由于外部外不会转移数据,它只是存放元数据,当外部外删除后,只是删除了元数据,而数据不会被删掉,因而相对更安详
hive 阐述完之后,接下来应用 sqoop 将 hive 中的数据导出到 mysql ,由于咱们的数据量惟有 8000 众条,因而这里直接导出所有外。
可视化经过我之前写过一篇博客运用ECharts可视化mysql数据库中的数据和这回的意思差不众,只可是这回的 echarts 用到了 ajax 动态加载,况且一共的恳求都归到了一个 servlet ,因而这里只贴一下 echarts 和 servlet 的代码
差异的上市地所占比例,可能看到采取纽约证券业务所上市的股票仍旧占了一半以上
差异上市地的涨跌幅统计,可能看到纽约证券业务所的涨跌幅总量最大,但这也和正在这里上市的股票最众相合系,可是每个上市地都是跌幅大于涨幅的,因而你可能看到股票并不是很容易就可能玩的溜的
最受接待的十大股票板块,可能看到股权是排正在第一的,排正在第二的是银行,软件排正在第五
市值最高的十支股票,可能看到苹果公司以赶过 8000 亿的数目领先,有个股票的名字 “HSBC Holdings, plc. Perpetual Sub Cap Secs” 对照长,把此外股票名字都盖住了,阿里巴巴排正在第十
到这里离线阐述的流程就告一段落了,hadoop 合用于对时延央求不高的离线解决,而当咱们必要及时解决的功夫,就必要用到 Storm 或者 Spark Streaming 了
这回咱们要及时爬取各只股票的最高价,然后以 echarts 动态图的形状展示出来,因而这回必要修正一下爬虫
这里咱们筑树了爬虫每爬一次就睡 1500 毫秒,比之前的爬虫少睡了 500 毫秒,由于我筑树的 echarts 动态图是每 2000 毫秒改进一次,因而起码要确保数据更新的速率要比显示的速率疾。
正在 process 伎俩中修正爬虫的逻辑,这回咱们不必要扫数的 json 数据,只必要个中的 cname(股票名称) 和 high(最高价) 字段,因而必要正在爬虫代码中解析 json 数据,将这两个字段取出来
正在 main 伎俩里咱们修正了 url 里的 num 参数,由原本的每次爬 60 条数据改成每次爬 20 条数据,这是为了让爬虫跑的期间长一点,以使动态图可能显示的久一点。其余,咱们还修正了输出目次,然后咱们将原本的 JsonFilePipeline 改成了 FilePipeline ,如许可能淘汰 Spark Streaming 中的及时解决代码量
可能看到咱们爬到的文献最前面两行不是咱们必要的,因而咱们必要正在 Spark Streaming 中过滤掉,然后将剩下的股票名称和最高价存到数据库内部,同时用 echarts 及时闪现
为了过滤掉前两行,咱们呈现了一个次序,要是以 : 将每行文本豆剖,第一行被分成三段,第二行被分成一段,而其余咱们必要的数据都被分成了两段。以这个次序,正在 Spark Streaming 中编写代码来过滤出咱们必要的数据。
结尾对 Dstream 实行估计打算,这里提防一点,咱们是对每个 RDD 分区创筑一个数据库衔尾。由于要是对每一行创筑一个衔尾的话,屡次的新筑和闭塞数据库衔尾对体系开销很大,影响及时解决的速率;而对直接每个 RDD 创筑一个衔尾的话又会报不行序列化的极度。
然后翻开 mysql 切换到 sina 数据库,新筑一个外,这里咱们新增了一个自增的 id 字段,由于正在做可视化的功夫,要从来显示最新的数据,这时咱们就可能依照 id 来降序查找,以确保每次查到的数据都差异
咱们先用限度台来当 kafka 的 producer,模仿输入少少数据,看看能不行无误的插入到 mysql 中
好了,由于刚刚的外插入了新的数据,因而咱们把刚刚的外删掉,从新创筑一个一样的外备用
然后筑树 batchSize = 1 是为了让数据库更新的实时一点,以便咱们可能观测到动态图的转化
可视化的一面仍旧花了很大的篇幅讲过了,这里就不烦琐了,直接贴上 echarts 动态图的代码
可是有一点必要提防, dao 层的 sql 我是这么写的,以确保每次查到的数据都差异
然而由于数据库更新的对照疾,因而咱们每查一次可以 id 仍旧涨了几十上百了,因而厉酷来说这也不太算及时,可是意思依然相似的
阅历了四个月的大数据进修,我学到了良众意思的东西,个中既有对已有学问的稳定,也懂得到了大数据这个新兴行业的魅力。谢谢诸君先生的悉心指示,另有诸君小伙伴的互交友流,愿望行家从来坚持着兴隆的好奇心与求知欲,长期年青。
目前为止,仍旧争论了机械进修和批解决形式的数据发现。现正在审视继续解决流数据,及时检测个中的本相和形式,坊镳从湖泊来...
注:转自 大数据经典进修途径.Linux根基和分散式集群技艺 学完此阶段可驾驭的焦点才干: 熟练使...
迩来正在进修分享一下心得。有良众人都是思要理财的但没有搞了然一个题目即是理财≠投资,而投资=理财。合于投资的若干个问...
向日葵干枯的眼泪 屡屡品味 也能咀嚼出血的香甜 面临太阳的呻吟 我乐了 然而没有乐作声
广告位 |