【头歌】共享单车之数据存储

这篇具有很好参考价值的文章主要介绍了【头歌】共享单车之数据存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第1关:获取工作簿中的数据

任务描述

本关任务:获取data.xls文件中的数据。

相关知识

获取工作簿中的信息,我们可以使用Java POIPOI是一个提供APIJava程序对Microsoft Office格式档案读和写的功能)提供的Workbook类来操作。

为了完成本关任务,你需要掌握:如何获取Wookbook的数据。

编程要求

在右侧编辑器 Begin-End 中补充代码,获取 data.xls 文件中的数据,具体获取以下数据并将结果打印: trip_id 、开始时间、结束经度、车辆 id

package com.educoder.savedata;

import java.io.InputStream;
import java.text.DecimalFormat;
import org.apache.commons.lang3.time.FastDateFormat;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;


public class SaveWookbook {

	public static void main(String[] args) throws Exception {
        /**********     Begin    **********/
		//1.通过类加载器获取本地文件并新建一个工作簿
        InputStream resourceAsStream = SaveData.class.getClassLoader().getResourceAsStream("data.xls");
        Workbook workbook = WorkbookFactory.create(resourceAsStream);
        
        //2.拿到工作簿中第一个Sheet
        Sheet sheet = workbook.getSheetAt(0);
        
        //3.获取当前Sheet中的行数
        int rows = sheet.getPhysicalNumberOfRows();
        
        //4.对所有有效数据进行遍历并输出(期间无效数据通过异常捕获方式清除)
        for(int n=1;n<rows;n++)
        {
            Row row = sheet.getRow(n);
            //通过异常方式清除格式不准确、数据不存在的无效行
            try{
                DecimalFormat formatter1 = new DecimalFormat("########");
                String trip_id = formatter1.format(row.getCell(0).getNumericCellValue());
                //开始时间
                FastDateFormat instance = FastDateFormat.getInstance("MM/dd/yyyyHH:mm");
                String beginTimeValue = row.getCell(1).getStringCellValue();
                long begintime = instance.parse(beginTimeValue).getTime();
                //车辆id
                int car_id = (int)row.getCell(3).getNumericCellValue();
                //结束经度
                double start_longitude = row.getCell(9).getNumericCellValue();
                DecimalFormat formatter2 = new DecimalFormat("###.######");
                String longitude = formatter2.format(start_longitude);
                System.out.println("骑行id:"+trip_id+",开始时间:"+begintime+",车辆id:"+car_id+",结束经度:"+longitude);
            }catch(Exception e){

            }
        }
        
        
       /******** **    End    ******* ***/
	}
}

第2关:保存共享单车数据

任务描述

本关任务:从dataResources.xls文件中获取共享单车数据,保存到HBase中。

相关知识

为了完成本关任务,你需要掌握:

  • 如何创建HBase表;
  • 如何读取文件;
  • 了解共享单车数据表格式以及如何获取数据;
  • 如何存储到HBase

编程要求

请补全右侧 Begin-End 之间的代码,分别获取携程网所有带有 hreflink 标签、第一次出现 class"pop_attention"div (可用 DOMCSS 二种方式实现)、以及所有 li 之后的 i 标签。文章来源地址https://www.toymoban.com/news/detail-497940.html

package com.educoder.savedata;

import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.time.FastDateFormat;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import com.educoder.util.HBaseUtil;

/* 
* 读取共享单车城市行车数据
* 
*/
public class SaveData {

	public static void SaveBicycleData()  throws Exception {
		/******** **   Begin   ******* ***/
       HBaseUtil.createTable("t_shared_bicycle", "info"); 
       InputStream resourceAsStream = SaveData.class.getClassLoader().getResourceAsStream("dataResources.xls"); 
       Workbook workbook = WorkbookFactory.create(resourceAsStream); 
       Sheet sheet = workbook.getSheetAt(0); 
       int rows = sheet.getPhysicalNumberOfRows(); 
       List<Put> puts = new ArrayList<Put>(); 
       for (int n = 1; n < rows; n++) { 
        // 通过异常方式清除格式不准确、数据不存在的无效行
            try { 
				Row row = sheet.getRow(n); 
                // 唯一骑行id,当作行rowkey 
                DecimalFormat formatter1 = new DecimalFormat("########"); 
                String trip_id = formatter1.format(row.getCell(0).getNumericCellValue()); 
                Put put = new Put(Bytes.toBytes(trip_id)); 
                byte[] family = Bytes.toBytes("info"); 
                // 开始时间
                FastDateFormat instance = FastDateFormat.getInstance("MM/dd/yyyy HH:mm"); 
                String beginTimeValue = row.getCell(1).getStringCellValue(); 
                Date parse = instance.parse(beginTimeValue); 
                put.addColumn(family, Bytes.toBytes("beginTime"),Bytes.toBytes(String.valueOf(parse.getTime()))); 
                // 结束时间
                String endTimeValue = row.getCell(2).getStringCellValue(); 
                Date parse2 = instance.parse(endTimeValue); 
                put.addColumn(family, Bytes.toBytes("endTime"),Bytes.toBytes(String.valueOf(parse2.getTime()))); 
                // 单车识别码
                int bicycleId = (int)row.getCell(3).getNumericCellValue(); 
                put.addColumn(family, Bytes.toBytes("bicycleId"), 
Bytes.toBytes(String.valueOf(bicycleId))); 
                // 出发地
                String departure = row.getCell(4).getStringCellValue(); 
                put.addColumn(family, Bytes.toBytes("departure"), 
Bytes.toBytes(departure)); 
                // 目的地
                String destination = row.getCell(5).getStringCellValue(); 
                put.addColumn(family, Bytes.toBytes("destination"), 
Bytes.toBytes(destination)); 
                // 所在城市
                String city = row.getCell(6).getStringCellValue(); 
                put.addColumn(family, Bytes.toBytes("city"), Bytes.toBytes(city)); 
                // 清除目的地= 所在城市或者出发地= 目的地的无效数据
				if (destination.equals(city)|| departure.equals(destination) ) { 
					continue; 
					} 
                //开始经度
                DecimalFormat formatter2 = new DecimalFormat("###.######"); 
                String start_longitude = formatter2.format(row.getCell(7).getNumericCellValue()); 
                put.addColumn(family, Bytes.toBytes("start_longitude"), Bytes.toBytes(String.valueOf(start_longitude))); 
                //开始纬度
                String start_latitude = formatter2.format(row.getCell(8).getNumericCellValue()); 
                put.addColumn(family, Bytes.toBytes("start_latitude"), Bytes.toBytes(String.valueOf(start_latitude))); 
                //结束经度
                String stop_longitude = formatter2.format(row.getCell(9).getNumericCellValue()); 
                put.addColumn(family, Bytes.toBytes("stop_longitude"), Bytes.toBytes(String.valueOf(stop_longitude))); 
                //结束纬度
                String stop_latitude = formatter2.format(row.getCell(10).getNumericCellValue()); 
                put.addColumn(family, Bytes.toBytes("stop_latitude"), 
Bytes.toBytes(String.valueOf(stop_latitude))); 
                puts.add(put); 
				} catch (Exception e) { 

				} 
				} 
				HBaseUtil.putByTable("t_shared_bicycle", puts);     
        
		/******* ***   End   ****** ****/
	}

}


到了这里,关于【头歌】共享单车之数据存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 共享单车数据处理与分析

    本案例来源不清楚,如果有作者,可以联系我,给加上对应链接 公共交通工具的“最后一公里”是城市居民出行采用公共交通出行的主要障碍,也是建设绿色城市、低碳城市过程中面临的主要挑战。 共享单车(自行车)企业通过在校园、地铁站点、公交站点、居民区、商业

    2024年02月09日
    浏览(32)
  • 共享单车之数据可视化

    任务描述 本关任务:使用JSP在百度地图上绘制一条共享单车起始路程。 相关知识 为了完成本关任务,你需要掌握: 如何创建地图实例; 如何在地图上绘制路程线。 创建地图实例 我们需要先在jsp中引入百度地图api。 myMap 引入之后我们便可使用api中BMap对象来创建地图实例:

    2024年02月03日
    浏览(25)
  • 毕业设计 基于大数据的共享单车数据分析

    Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的数据分析项目,基于大数据的共享单车数据分析 毕设帮助,开题指导,资料分享,疑问解答(见文末) 🧿 选题指导, 项目分享:见文末 公共交通工具的“最后一公里”是城市居民出行采用公共交通出行的主要障碍,

    2024年04月27日
    浏览(35)
  • 基于数据挖掘的共享单车骑行数据分析与预测

      完整代码下载: https://download.csdn.net/download/andrew_extra/88612623 共享单车系统在大城市越来越流行,通过提供价格合理的自行车租赁,让人们可以享受在城市里骑自行车的乐趣,而无需为自己购买自行车。本项目利用 Nice Ride MN 在双子城(明尼苏达州明尼阿波利斯市/圣保罗市)

    2024年02月11日
    浏览(30)
  • 大数据毕业设计 共享单车数据分析与可视化系统 - Python

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月06日
    浏览(41)
  • 大数据毕设项目 - 基于大数据的共享单车数据分析与可视化

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月13日
    浏览(41)
  • 【计算机毕设选题】基于大数据的共享单车数据分析与可视化

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(41)
  • 共享单车蓝牙锁方案phy6222系列蓝牙芯片

    公共交通工具的\\\"最后一公里\\\"是城市居民出行采用公共交通出行的主要障碍,也是建设绿色城市、低碳城市过程中面临的主要挑战。随着科技的发展,物联网领域市场的不断开拓BLE协议在共享交通工具上打开了突破口,目前已广泛应用及遍布我们的生活。 蓝牙(Bluetooth®):是一

    2024年02月10日
    浏览(30)
  • 北斗高精度定位,破解共享单车停车乱象

    如今,共享单车已经成为了许多人出行的首选方式,方便了市民们的“最后一公里”,给大家的生活带来了很多便利。然而,乱停乱放的单车也给城市治理带来了难题。在这种情况下,相关企业尝试将北斗导航定位芯片装载到共享单车上,通过高精度的位置识别,来破解乱停

    2024年02月09日
    浏览(43)
  • 神经网络解决预测问题(以共享单车预测为例)

    背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目

    2024年02月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包