00.大型数据库技术课堂测试

1、完成科技查新基本信息填报功能,基本信息如下所示:

可参考https://chaxin.las.ac.cn/novelty/embed/kjcx.htm页面样式。

项目名称

平台编号

查新范围

□国内    □国外 

查新目的

О立即查新         О成果查新        О其他查新

(单选框,选中某个选项,显示相应的多选框)

立即查新

□1.项目申报(国家级、省部级、学协会、其他)

□2.中小企业创新基金(研发阶段、小试-中试、市场推广)

□3.新产品

□4.技术引进

□5.技术吸收与创新

□6.其他

成果查新

□7.成果鉴定

□8.高新技术成果转化

□9.申报奖励(国家级、省部级、学协会、其他奖励)

□10.高新技术企业认定

□11.其他

其他查新

□12.博士论文开题

□13.申报专利

□14.其他

查新项目的科学技术要点

充分反映出查新项目的概貌,简述项目的背景、技术问题、解决技术问题所采用的方案、主要技术特征、技术参数或指标、应用范围等相关技术内容。(要求限制500字)

查新点个数

(必填)

查新点1

 

查新点N(根据个数显示)

 

参考检索词

(主题词、关键词、规范词、同义词、缩写、全称、化学名称、分子式、专利分类号等,国内外查新要分中英文列出。)如果有多个检索词要求点击按钮添加多个检索词文本框。

完成时间

说明:国内查新7个工作日(1个查新点),每增加1个查新点,查新费用增加300元,工作时间增加1个工作日;国内外查新10个工作日(1个查新点),每增加1个查新点,查新费用增加600元,工作时间增加3个工作日。(国内查新加急不得少于3个工作日,国内外查新加急不得少于5个工作日)。

加急费情况介绍:

收费:200元/工作日

时间:国内查新第一个查新点不得少于3个工作日,每增加一个点多一个工作日;

国内外查新第一个查新点不得少于5个工作日,每增加一个点多一个工作日;

 

正常:О7个工作日

加急:О 

学科分类

用文本下拉框显示,具体内容参考表后图1.

产业分类

用文本下拉框显示,具体内容参考表后图2.

备注

 

图1学科分类示意图

 

图2产业分类示意图

2、后台数据库要求使用HBASE数据库,并将新数据存入HBase新建表中。

3、实现从数据库中将新数据读出展示在前台页面。

二、评分等级:

A级:完成上述全部功能,并实现超额实现数据的删、修改、简单查询等功能。

B级:实现信息填报功能,未按要求实现全部功能。

C级:实现部分功能,可实现数据库连接,并在数据库中建立相应的表。

D级:安装成功Hbase,无法实现编程,可以实现手动建表。

 

package test.java;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;

public class HdfsDemo {
    public static void main(String[] args) throws IOException {
        insert();
        update();
        read();
        delete();
    }

    //删除文件
    private static void delete() throws IOException {
        //由于我的Hadoop完全分布式根目录对yinzhengjie以外的用户(尽管是root用户也没有写入权限哟!因为是hdfs系统,并非Linux系统!)没有写入
        // 权限,所以需要手动指定当前用户权限。使用“HADOOP_USER_NAME”属性就可以轻松搞定!
        System.setProperty("HADOOP_USER_NAME","yinzhengjie");
        //实例化一个Configuration,它会自动去加载本地的core-site.xml配置文件的fs.defaultFS属性。(该文件放在项目的resources目录即可。)
        Configuration conf = new Configuration();
        //代码的入口点,初始化HDFS文件系统,此时我们需要把读取到的fs.defaultFS属性传给fs对象。
        FileSystem fs = FileSystem.get(conf);
        //这个path是指是需要在文件系统中写入的数据,里面的字符串可以写出“hdfs://s101:8020/yinzhengjie.sql”,但由于core-site.xml配置
        // 文件中已经有“hdfs://s101:8020”字样的前缀,因此我们这里可以直接写文件名称
        Path path = new Path("/yinzhengjie.sql");
        //通过fs的delete方法可以删除文件,第一个参数指的是删除文件对象,第二参数是指递归删除,一般用作删除目录
        boolean res = fs.delete(path, true);
        if (res == true){
            System.out.println("====================");
            System.out.println(path + "文件删除成功!");
            System.out.println("====================");
        }
        //释放资源
        fs.close();
    }

    //将数据追加到文件内容中
    private static void update() throws IOException {
        //由于我的Hadoop完全分布式根目录对yinzhengjie以外的用户(尽管是root用户也没有写入权限哟!因为是hdfs系统,并非Linux系统!)没有写入
        // 权限,所以需要手动指定当前用户权限。使用“HADOOP_USER_NAME”属性就可以轻松搞定!
        System.setProperty("HADOOP_USER_NAME","yinzhengjie");

        //实例化一个Configuration,它会自动去加载本地的core-site.xml配置文件的fs.defaultFS属性。(该文件放在项目的resources目录即可。)
        Configuration conf = new Configuration();
        //代码的入口点,初始化HDFS文件系统,此时我们需要把读取到的fs.defaultFS属性传给fs对象。
        FileSystem fs = FileSystem.get(conf);
        //这个path是指是需要在文件系统中写入的数据,里面的字符串可以写出“hdfs://s101:8020/yinzhengjie.sql”,但由于core-site.xml配置
        // 文件中已经有“hdfs://s101:8020”字样的前缀,因此我们这里可以直接写文件名称
        Path path = new Path("/yinzhengjie.sql");
        //通过fs的append方法实现对文件的追加操作
        FSDataOutputStream fos = fs.append(path);
        //通过fos写入数据
        fos.write("\nyinzhengjie".getBytes());
        //释放资源
        fos.close();
        fs.close();

    }

    //将数据写入HDFS文件系统
    private static void insert() throws IOException {
        //由于我的Hadoop完全分布式根目录对yinzhengjie以外的用户(尽管是root用户也没有写入权限哟!因为是hdfs系统,并非Linux系统!)没有写入
        // 权限,所以需要手动指定当前用户权限。使用“HADOOP_USER_NAME”属性就可以轻松搞定!
        System.setProperty("HADOOP_USER_NAME","yinzhengjie");

        //实例化一个Configuration,它会自动去加载本地的core-site.xml配置文件的fs.defaultFS属性。(该文件放在项目的resources目录即可。)
        Configuration conf = new Configuration();
        //代码的入口点,初始化HDFS文件系统,此时我们需要把读取到的fs.defaultFS属性传给fs对象。
        FileSystem fs = FileSystem.get(conf);
        //这个path是指是需要在文件系统中写入的数据,里面的字符串可以写出“hdfs://s101:8020/yinzhengjie.sql”,但由于core-site.xml配置
        // 文件中已经有“hdfs://s101:8020”字样的前缀,因此我们这里可以直接写文件名称
        Path path = new Path("/yinzhengjie.sql");
        //通过fs的create方法创建一个文件输出对象,第一个参数是hdfs的系统路径,第二个参数是判断第一个参数(也就是文件系统的路径)是否存在,如果存在就覆盖!
        FSDataOutputStream fos = fs.create(path,true);
        //通过fos写入数据
        fos.writeUTF("尹正杰");
        //释放资源
        fos.close();
        fs.close();
    }

    //在HDFS文件系统中读取数据
    private static void read() throws IOException {
        //实例化一个Configuration,它会自动去加载本地的core-site.xml配置文件的fs.defaultFS属性。(该文件放在项目的resources目录即可。)
        Configuration conf = new Configuration();
        //代码的入口点,初始化HDFS文件系统,此时我们需要把读取到的fs.defaultFS属性传给fs对象。
        FileSystem fs = FileSystem.get(conf);
        //这个path是指NameNode中的HDFS分布式系统中的路径映射(注意,我这里写的是主机名,你可以写IP,如果是测试环境的话需要在hosts文件中添加主机名映射哟!)
        Path path = new Path("hdfs://s101:8020/yinzhengjie.sql");
        //通过fs读取数据
        FSDataInputStream fis = fs.open(path);
        int len = 0;
        byte[] buf = new byte[4096];
        while ((len = fis.read(buf)) != -1){
            System.out.println(new String(buf, 0, len));
        }
    }
}


/*
以上代码执行结果如下:
     尹正杰
yinzhengjie
====================
/yinzhengjie.sql文件删除成功!
====================
 */

 

posted @ 2021-09-11 10:21  我试试这个昵称好使不  阅读(61)  评论(0编辑  收藏  举报