当前位置:   article > 正文

头歌-旅游网站大数据分析 - 数据存储_头歌 旅游网站数据分析

头歌 旅游网站数据分析

第1关:保存酒店和城市数据

  1. package com.savedata;
  2. import java.io.InputStream;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.apache.commons.io.IOUtils;
  6. import org.apache.hadoop.hbase.client.Put;
  7. import org.apache.hadoop.hbase.util.Bytes;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.entity.Hotel;
  10. import com.entity.HotelComment;
  11. import com.util.HBaseUtil;
  12. public class SaveData {
  13. /**
  14. * 获取并保存酒店和城市数据
  15. */
  16. public static void saveCityAndHotelInfo() {
  17. /********** Begin **********/
  18. try {
  19. HBaseUtil.createTable("t_city_hotels_info", new String[] { "cityInfo", "hotel_info" });
  20. } catch (Exception e) {
  21. // 创建表失败
  22. e.printStackTrace();
  23. }
  24. List<Put> puts = new ArrayList<>();
  25. // 添加数据
  26. try {
  27. InputStream resourceAsStream = SaveData.class.getClassLoader().getResourceAsStream("aomen.txt");
  28. String readFileToString = IOUtils.toString(resourceAsStream, "UTF-8");
  29. List<Hotel> parseArray = JSONObject.parseArray(readFileToString, Hotel.class);
  30. String hongkong = IOUtils.toString(SaveData.class.getClassLoader().getResourceAsStream("hongkong.txt"),
  31. "UTF-8");
  32. List<Hotel> hongkongHotel = JSONObject.parseArray(hongkong, Hotel.class);
  33. parseArray.addAll(hongkongHotel);
  34. for (Hotel hotel : parseArray) {
  35. String cityId = hotel.getCity_id();
  36. String hotelId = hotel.getId();
  37. Put put = new Put(Bytes.toBytes(cityId + "_" + hotelId));
  38. // 添加city数据
  39. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("cityId"), Bytes.toBytes(cityId));
  40. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("cityName"),
  41. Bytes.toBytes(hotel.getCity_name()));
  42. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("pinyin"), Bytes.toBytes(hotel.getPinyin()));
  43. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("collectionTime"),
  44. Bytes.toBytes(hotel.getCollectionTime()));
  45. // 添加hotel数据
  46. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("id"), Bytes.toBytes(hotel.getId()));
  47. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("name"), Bytes.toBytes(hotel.getName()));
  48. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("price"), Bytes.toBytes(String.valueOf(hotel.getPrice())));
  49. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("lon"), Bytes.toBytes(String.valueOf(hotel.getLon())));
  50. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("url"), Bytes.toBytes(hotel.getUrl()));
  51. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("img"), Bytes.toBytes(hotel.getImg()));
  52. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("address"), Bytes.toBytes(hotel.getAddress()));
  53. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("score"), Bytes.toBytes(String.valueOf(hotel.getScore())));
  54. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("dpscore"), Bytes.toBytes(String.valueOf(hotel.getDpscore())));
  55. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("dpcount"), Bytes.toBytes(String.valueOf(hotel.getDpcount())));
  56. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("star"), Bytes.toBytes(hotel.getStar()));
  57. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("stardesc"),
  58. Bytes.toBytes(hotel.getStardesc()));
  59. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("shortName"),
  60. Bytes.toBytes(hotel.getShortName()));
  61. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("isSingleRec"),
  62. Bytes.toBytes(hotel.getIsSingleRec()));
  63. puts.add(put);
  64. }
  65. // 批量保存数据
  66. HBaseUtil.putByTable("t_city_hotels_info", puts);
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. }
  70. /********** End **********/
  71. }
  72. /**
  73. * 获取和保存酒店的评论数据
  74. */
  75. public static void saveCommentInfo() {
  76. /********** Begin **********/
  77. /********** End **********/
  78. }
  79. }

第2关:保存酒店评论信息

  1. package com.savedata;
  2. import java.io.InputStream;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.apache.commons.io.IOUtils;
  6. import org.apache.hadoop.hbase.client.Put;
  7. import org.apache.hadoop.hbase.util.Bytes;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.entity.Hotel;
  10. import com.entity.HotelComment;
  11. import com.util.HBaseUtil;
  12. public class SaveData {
  13. /**
  14. * 获取并保存酒店和城市数据
  15. */
  16. public static void saveCityAndHotelInfo() {
  17. /********** Begin **********/
  18. try {
  19. HBaseUtil.createTable("t_city_hotels_info", new String[] { "cityInfo", "hotel_info" });
  20. } catch (Exception e) {
  21. // 创建表失败
  22. e.printStackTrace();
  23. }
  24. List<Put> puts = new ArrayList<>();
  25. // 添加数据
  26. try {
  27. InputStream resourceAsStream = SaveData.class.getClassLoader().getResourceAsStream("aomen.txt");
  28. String readFileToString = IOUtils.toString(resourceAsStream, "UTF-8");
  29. List<Hotel> parseArray = JSONObject.parseArray(readFileToString, Hotel.class);
  30. String hongkong = IOUtils.toString(SaveData.class.getClassLoader().getResourceAsStream("hongkong.txt"),
  31. "UTF-8");
  32. List<Hotel> hongkongHotel = JSONObject.parseArray(hongkong, Hotel.class);
  33. parseArray.addAll(hongkongHotel);
  34. for (Hotel hotel : parseArray) {
  35. String cityId = hotel.getCity_id();
  36. String hotelId = hotel.getId();
  37. Put put = new Put(Bytes.toBytes(cityId + "_" + hotelId));
  38. // 添加city数据
  39. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("cityId"), Bytes.toBytes(cityId));
  40. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("cityName"),
  41. Bytes.toBytes(hotel.getCity_name()));
  42. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("pinyin"), Bytes.toBytes(hotel.getPinyin()));
  43. put.addColumn(Bytes.toBytes("cityInfo"), Bytes.toBytes("collectionTime"),
  44. Bytes.toBytes(hotel.getCollectionTime()));
  45. // 添加hotel数据
  46. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("id"), Bytes.toBytes(hotel.getId()));
  47. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("name"), Bytes.toBytes(hotel.getName()));
  48. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("price"), Bytes.toBytes(String.valueOf(hotel.getPrice())));
  49. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("lon"), Bytes.toBytes(String.valueOf(hotel.getLon())));
  50. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("url"), Bytes.toBytes(hotel.getUrl()));
  51. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("img"), Bytes.toBytes(hotel.getImg()));
  52. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("address"), Bytes.toBytes(hotel.getAddress()));
  53. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("score"), Bytes.toBytes(String.valueOf(hotel.getScore())));
  54. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("dpscore"), Bytes.toBytes(String.valueOf(hotel.getDpscore())));
  55. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("dpcount"), Bytes.toBytes(String.valueOf(hotel.getDpcount())));
  56. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("star"), Bytes.toBytes(hotel.getStar()));
  57. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("stardesc"),
  58. Bytes.toBytes(hotel.getStardesc()));
  59. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("shortName"),
  60. Bytes.toBytes(hotel.getShortName()));
  61. put.addColumn(Bytes.toBytes("hotel_info"), Bytes.toBytes("isSingleRec"),
  62. Bytes.toBytes(hotel.getIsSingleRec()));
  63. puts.add(put);
  64. }
  65. // 批量保存数据
  66. HBaseUtil.putByTable("t_city_hotels_info", puts);
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. }
  70. /********** End **********/
  71. }
  72. /**
  73. * 获取和保存酒店的评论数据
  74. */
  75. public static void saveCommentInfo() {
  76. /********** Begin **********/
  77. // 创建评论表
  78. try {
  79. HBaseUtil.createTable("t_hotel_comment", new String[] { "hotel_info", "comment_info" });
  80. } catch (Exception e) {
  81. // 创建表失败
  82. e.printStackTrace();
  83. }
  84. InputStream resourceAsStream = SaveData.class.getClassLoader().getResourceAsStream("comment.txt");
  85. try {
  86. String readFileToString = IOUtils.toString(resourceAsStream, "UTF-8");
  87. List<HotelComment> otherCommentListByPage = JSONObject.parseArray(readFileToString, HotelComment.class);
  88. // 获取数据
  89. List<Put> puts = new ArrayList<>();
  90. // 定义Put对象
  91. for (HotelComment comment : otherCommentListByPage) {
  92. Put put = new Put((comment.getHotel_id() + "_" + comment.getId()).getBytes());
  93. put.addColumn("hotel_info".getBytes(), "hotel_name".getBytes(),
  94. comment.getHotel_name().getBytes());
  95. put.addColumn("hotel_info".getBytes(), "hotel_id".getBytes(), comment.getHotel_id().getBytes());
  96. // 数据量很大在这里只保存用作分析的数据
  97. put.addColumn("comment_info".getBytes(), "id".getBytes(), Bytes.toBytes(String.valueOf(comment.getId())));
  98. put.addColumn("comment_info".getBytes(), "baseRoomId".getBytes(), Bytes.toBytes(String.valueOf(comment.getBaseRoomId())));
  99. if (comment.getBaseRoomId() != -1 && comment.getBaseRoomName() != null) {
  100. put.addColumn("comment_info".getBytes(), "baseRoomName".getBytes(),
  101. Bytes.toBytes(comment.getBaseRoomName()));
  102. }
  103. put.addColumn("comment_info".getBytes(), "checkInDate".getBytes(), Bytes.toBytes(comment.getCheckInDate()));
  104. put.addColumn("comment_info".getBytes(), "postDate".getBytes(), Bytes.toBytes(comment.getPostDate()));
  105. put.addColumn("comment_info".getBytes(), "content".getBytes(), Bytes.toBytes(comment.getContent()));
  106. put.addColumn("comment_info".getBytes(), "highlightPosition".getBytes(),
  107. Bytes.toBytes(comment.getHighlightPosition()));
  108. put.addColumn("comment_info".getBytes(), "hasHotelFeedback".getBytes(),
  109. Bytes.toBytes(String.valueOf(comment.getHasHotelFeedback())));
  110. put.addColumn("comment_info".getBytes(), "userNickName".getBytes(),
  111. Bytes.toBytes(comment.getUserNickName()));
  112. puts.add(put);
  113. }
  114. // 上传数据
  115. HBaseUtil.putByTable("t_hotel_comment", puts);
  116. } catch (Exception e) {
  117. e.printStackTrace();
  118. }
  119. /********** End **********/
  120. }
  121. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/409035
推荐阅读
相关标签
  

闽ICP备14008679号