Hadoop综合大作业

                                                                                                        Hadoop综合大作业

1.用Hive对爬虫大作业产生的文本文件(或者英文词频统计下载的英文长篇小说)词频统计。

1.首先启动hadoop,并查看环境是否齐全

2..在Hdfs上创建文件夹storyinput,并且创建并编辑story.txt。将下载的英文小说写进去。而我只是将一篇章节的英文小说放进去。

3.启动hive并创建原始文档表并将小说导入到表docs中。

4.查看内容 是否已经导入

5.用HQL进行词频统计,结果放在表story_count里

6.统计结果:

2.用Hive对爬虫大作业产生的csv文件进行数据分析,写一篇博客描述你的分析过程和分析结果。

 1.首先,我爬取的是网易云问答社区的几页数据,包括问题,提问者,时间和网友的回答。

之后csv文件的导出是要用到 pandas  的,需要导入pandas 后,使用pandas导出。

#coding=utf-8#coding=utf-8
# -*- coding : UTF-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas
list_question=[]
list_author=[]
list_time=[]
list_content=[]

def getDetail(newsUrl):                                         #对每个li下的回答内容进行保存获取
    resd = requests.get(newsUrl)
    resd.encoding = 'utf-8'
    soupd = BeautifulSoup(resd.text, 'html.parser')
    question= soupd.select('.m-question')[0].select('.tlt')[0].text
    author= soupd.select('.m-info.f-fr')[0].select('.f-cb')[0].text
    time = soupd.select('.m-info.f-fr')[0].select('.m-info-time')[0].text
    for new in soupd.select('.cnt-qs')[0].select('.item-qs'):
       content = new.select('.cnt')[0].text
    list_question.append(question)
    list_author.append(author)
    list_time.append(time)
    list_content.append(content)
    print("提问的问题:"+str(list_question))
    print("提问网友:"+str(list_author))
    print("提问时间:"+str(list_time))
    print("网友回答内容:"+str(list_content))

    f=pandas.DataFrame(
        {
            'questions':pandas.Categorical(list_question),
            'theauthor':pandas.Categorical(list_author),
            'Datatime':pandas.Categorical(list_time),
            'allcontent':pandas.Categorical(list_content)
        }
     )
    f.to_csv('WangyiData.csv',encoding='utf_8_sig')



def Get_Pageurl(url):
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    for new in soup.select('.m-ask-item')[0].select('.item'):
        theUrl= new.select('.tlt.tlt-1')[0].select('a')[0]['href']                   #获取每个li标签下的url
        url = 'https://sq.163yun.com' + theUrl
        getDetail(url)


url = 'https://sq.163yun.com/ask/search?current=1&keywords=5LqR6K6h566X'     #网易云问答的网站
resd = requests.get(url)
resd.encoding = 'utf-8'
soup1 = BeautifulSoup(resd.text, 'html.parser')
Get_Pageurl(url)
for i in range(2, 5):
   Get_Pageurl('https://sq.163yun.com/ask/search?current={}&keywords=5LqR6K6h566X'.format(i))

csv导出是这个,不加上encoding='utf_8_sig' 导出来的是会乱码的。

 f.to_csv('WangyiData.csv',encoding='utf_8_sig')

下面是我的csv文件内容:

之后将导出的csv文件通过邮箱下载到linux中。

我们创造一个:lastbigwork文件之后赋予权限,将自己的csv文件放入到lastbigwork中。之后查看目录可以看到已经放入了。

2.预处理,sed主要是用于一些简单的文本替换,-i 删除,‘1d’是指删除哪一条数据。

之后查看csv数据情况。

创建一个脚本文件pre_deal.sh

great pre_deal.sh
#执行脚本文件后将数据存储进user_table.txt
bash ./pre_deal.sh MuKeData.csv user_table.txt

脚本文件如下所示:

之后查看数据发生了什么变化,如图所示:

3.将弄好的数据导入HDFS

开启dfs,如图所示:

start-all.sh
jps

我在hdfs中创建了一个bigdatabasecase/dataset,好用于数据处理。

之后将user_table.txt存入到hdfs中的路径中:

验证查看前十行的数据,确定数据已经放入lastbigwork/dataset下的user_table.txt 有数据。

4.启动mysql数据库,导入到hive数据仓库中。

启动hive

 

因为Hive里的表出现了一些问题,所以后面的修改后再发上来。

原文地址:https://www.cnblogs.com/tiankongyiluozhiwu/p/9066683.html