目录
地区旅游大数据可视化管理 1
最终数据可视化样式 1
绪论 3
研究背景 3
研究现状 4
开发环境 4
数据抓取和清洗 5
相关技术 5
Jsoup 5
数据抓取 5
利用Jsoup抓取旅游网站数据 5
数据清洗 5
清洗无意义数据 7
获取所有酒店信息 7
数据存储 7
相关技术 7
HBase 7
结构介绍 7
存储格式 8
存储酒店数据 8
HBaseUtil工具类设计 8
酒店信息表 10
酒店评论信息表 11
MapReduce程序——统计平均价格 11
MapReduce程序——统计词频 12
数据可视化 14
相关技术 14
Echarts 14
可视化图表设计 14
酒店价格分布图 15
酒店平均价格对比图 15
酒店房型统计图 15
数据可视化展示 16
结语 16
参考文献 17
开发环境
本文用到的开发环境如下:
1.IDEA 2018.3
2.Hadoop 2.7.2
3.Zookeeper 3.4.10
4.Hive 1.2.1
5.HBase 1.3.1
6.Echarts 5.1.1
数据抓取和清洗
相关技术
Jsoup
Java中支持的爬虫框架有很多,比如WebMagic、Spider、Jsoup等。我们使用Jsoup来实现一个简单的爬虫程序。
Jsoup拥有十分方便的api来处理html文档,比如参考了DOM对象的文档遍历方法,参考了CSS选择器的用法等等,因此我们可以使用Jsoup快速地掌握爬取页面数据的技巧。
数据抓取
利用Jsoup抓取旅游网站数据
通过Jsoup对网页中有用的数据进行解析,之后我们将得到想要的数据。获取城市所有信息,首先需要获取到城市名称也就是获取所有

标签中的所有a链接的文本。
数据清洗
数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。
使用Jsoup获取到的是整个页面的资源,其中包含html的代码,也就会包含无意义的数据,需将它进行清洗。
获取所有
标签。
Elements all_dd = pinyin_filter.getElementsByTag(“dd”);
获取
标签下的所有a标签。
String cityID = StringUtil.getNumbers(element.attr(“href”));
获取所有a标签中的文本并添加到HotelCity类中,HotelCity实体类信息

package F_ChartsData;

import Util.Connected;
import Util.HBaseUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class chartsData {
    /**
     * 获取前number个澳门酒店名称和价格
     * @param number 指定获取几个酒店的数据
     * @return
     * @throws IOException
     */
    public static Map<String, String> dataOfAoMen(int number) throws IOException {
        List<Result> databyCName = HBaseUtil.getDatabyCName("澳门", "t_city_hotels_info", number);
        Map<String, String> dataByColumn = HBaseUtil.getDataByColumn(databyCName,
                "hotel_info", "name",
                "hotel_info", "price");
        return dataByColumn;
    }

    /**
     * 获取前number个香港酒店名称和价格
     * @param number 指定获取几个酒店的数据
     * @return
     * @throws IOException
     */
    public static Map<String, String> dataOfHongKong(int number) throws IOException {
        List<Result> databyCName = HBaseUtil.getDatabyCName("香港", "t_city_hotels_info", number);
        Map<String, String> dataByColumn = HBaseUtil.getDataByColumn(databyCName,
                "hotel_info", "name",
                "hotel_info", "price");
        return dataByColumn;
    }

    /**
     * 获取各城市的酒店平均价格
     * @return
     * @throws Exception
     */
    public static Map<String,String> dataOfPrice() throws Exception {
        Connection conn = Connected.getHbase();
        Table table = conn.getTable(TableName.valueOf("AveragePrice"));

        HashMap<String, String> soult = new HashMap<>();

        Scan scan = new Scan();
        ResultScanner scanner = table.getScanner(scan);

        for (Result result : scanner) {
            String k = Bytes.toString(result.getRow());
            String v = Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("price")));
            soult.put(k,v);
        }
        table.close();
        conn.close();
        return soult;
    }



}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐