您的位置:澳门新葡8455最新网站 > 数据库管理 > 焚薮而田配置hive时现身无法加载自身修正的hiv

焚薮而田配置hive时现身无法加载自身修正的hiv

发布时间:2019-12-02 18:02编辑:数据库管理浏览(162)

    认识mysql第三篇,发出的内容适合初学者,如果能持续关注我的博客,可以全面的掌握mysql的常用知识,后续我也会陆续发出python相关的知识,关注我,和我一共进步吧!

    配置hive时出现不能加载自己修改的hive-site.xml等配置文件的问题。发现它总是加载默认的配置文件。
    解决:
    hadoop的配置文件hadoop-env.sh中加上export HADOOP_CLASSPATH=$HIVE_HOVE/conf:$HADOOP_CLASSPATH
    还有一个问题:运行其他hadoop子项目时总会出现找不到类文件,必须把相关jar包拷贝到hadoop的lib目录下,导致其lib目录会越来越大。
    至今不知道怎样将其他jar包加入到classpath中,网上说用export HADOOP_CLASSPATH=“”,但是好像不行
    hive --config /root/etc/hive(注:/root/etc/hive是指hive-site.xml的存放目录)

    1、SQL查询
      1、执行顺序
        3、select ...聚合函数 from 表名
          1、where ...
          2、group by ...
          4、having ...
          5、order by ...
          6、limit ...
      2、group by
        1、作用 :给查询结果进行分组
        2、示例
          1、查询表中一共有几个国家

    HiveQL以分号结束。可以跨行。
    在hive的shell上可以使用dfs命令执行HDFS文件操作。
    dfs -ls /user/hive/warehouse;

          2、计算每个国家的平均攻击力
          select country,avg(gongji) from sanguo
          group by country;
        3、查找所有国家中英雄数量最多的前2名的 国家名称和英雄数量
          select country,count(id) as number from sanguo
          group by country
          order by number desc
          limit 2;
    3、注意
      1、group by之后的字段名必须要为select之后的字段名
      2、如果select之后的字段名和group by之后的字段不一致,则必须对该字段进行聚合处理(聚合函数)
      3、having语句
    1、作用
    对查询的结果进行进一步筛选
    2、示例
      1、找出平均攻击力>105的国家的前2名,显示国家名和平均攻击力
      select country,avg(gongji) as pjgj from sanguo
      group by country
      having pjgj>105
      order by pjgj DESC
      limit 2;
    3、注意
      1、having语句通常和group by语句联合使用,过滤由group by语句返回的记录集
      2、where只能操作表中实际存在字段,having可操作由聚合函数生成的显示列
    4、distinct
      1、作用 :不显示字段重复值
      2、示例
    1、表中都有哪些国家
      select distinct country from sanguo;
    2、计算蜀国一共有多少个英雄
      select count(distinct id) from sanguo
      where country="蜀国";
    3、注意
      1、distinct和from之间所有字段都相同才会去重
      2、distinct不能对任何字段做聚合处理
    5、查询表记录时做数学运算
    1、运算符
      + - * / %
    2、示例
    1、查询时所有英雄攻击力翻倍
    select id,name,gongji*2 as gj from sanguo;

    hive语句必须以分号“;”结束。
    不支持更新,索引和事务。
    表名,列名不区分大小写。
    在hive的shell上可以使用dfs命令执行HDFS文件的操作。>>dfs -ls /user/hive/warehouse/;
    查看和设置临时变量:>>set fs.default.name[=hdfs://zhaoxiang:9000];
    导入jar包: >>add jar hivejar.jar;
    创建函数: >>create temporary function udfTest as 'com.cstore.udfExample';
    【在pig中使用UDF,先用register语句注册jar文件,之后可以通过完全的java类名调用,或者用define语句为UDFding 指定一个名称:
    register pigjar.jar;
    define UPPER org.pigjar.string.UPPER();
    B = foreach a generate UPPER($0); 】

    ## sudo apt-get install python3-pip
    ## sudo pip3 install pymysql
    2、约束
      1、作用 :保证数据的完整性、一致性、有效性
    2、约束分类
      1、默认约束(default)
      1、插入记录,不给该字段赋值,则使用默认值
    2、非空约束(not NULL)
      1、不允许该字段的值有NULL记录
      sex enum("M","F","S") not null defalut "S"

    可以在本地命令行运行hive的shell:
    $ hive -e 'select * from userinfo' (执行hiveQL语句)
    $ hive --config /hive-0.9.0/conf (重新载入新的配置文件)
    $ hive --service hiveserver 50000(启动服务)

    3、索引
      1、定义
      对数据库表的一列或多列的值进行排序的一种结构(Btree方式)
      2、优点
      加快数据检索速度
    3、缺点
      1、占用物理存储空间
      2、当对表中数据更新时,索引需要动态维护,降低数据维护速度
    4、索引示例
      1、开启运行时间检测 :set profiling=1;
      2、执行查询语句
      select name from t1 where name="lucy99999";
    3、查看执行时间
      show profiles;
    4、在name字段创建索引
      create index name on t1(name);
    5、再执行查询语句
      select name from t1 where name="lucy88888";
    6、查看执行时间
      show profiles;
    5、索引
    1、普通索引(index)
    1、使用规则
    1、可设置多个字段
    2、字段值无约束
    3、key标志 :MUL
    2、创建index
    1、创建表时
      create table 表名(...
      index(字段名),index(字段名));
    2、已有表
      create index 索引名 on 表名(字段名);
      create index name on t3(name);
    3、查看索引
      1、desc 表名; --> KEY标志为:MUL
      2、show index from 表名G;
      4、删除索引
      drop index 索引名 on 表名;
    2、唯一索引(unique)
      1、使用规则
        1、可设置多个字段
        2、约束 :字段值不允许重复,但可为 NULL
        3、KEY标志 :UNI
        2、创建
        1、创建表时创建
        unique(字段名),
        unique(字段名)
    澳门新葡萄京娱乐场,2、已有表
      create unique index 索引名 on 表名(字段名);
    3、查看、删除 同普通索引
    3、主键索引(primary key)
    自增长属性(auto_increment,配合主键一起使用)
    1、使用规则
    1、只能有一个主键字段
    2、约束 :不允许重复,且不能为NULL
    3、KEY标志 :PRI
    4、通常设置记录编号字段id,能唯一锁定一条记录
    2、创建
    1、创建表时
      (id int primary key auto_increment,
      )auto_increment=10000;##设置自增长起始值
    已有表添加自增长属性:
      alter table 表名 modify id int auto_increment;
    已有表重新指定起始值:
      alter table 表名 auto_increment=20000;
    2、已有表
      alter table 表名 add primary key(id);
    3、删除
    1、删除自增长属性(modify)
      alter table 表名 modify id int;
    2、删除主键索引
      alter table 表名 drop primary key;
    4、外键索引
    4、数据导入
    1、作用 :把文件系统的内容导入到数据库中
    2、语法
    load data infile "/var/lib/mysql-files/文件名"
    into table 表名
    fields terminated by "分隔符"
    lines terminated by "n";
    3、将scoretable.csv文件导入到数据库的表中
    1、在数据库中创建对应的表
    create table scoretab(
    id int,
    name varchar(15),
    score float(5,2),
    number bigint,
    class char(7)
    );
    2、把文件拷贝到数据库的默认搜索路径中
    1、查看默认搜索路径
      show variables like "secure_file_priv";
      /var/lib/mysql-files/
    2、拷贝文件
      sudo cp ~/scoretable.csv /var/lib/mysql-files/
    3、执行数据导入语句
    load data infile "/var/lib/mysql-files/scoretable.csv"
    into table scoretab
    fields terminated by ","
    lines terminated by "n";
    4、文件权限
    rwxrw-rw- 1 tarena tarena scoretable.csv
    所有者 所属组
    rwx : tarena用户
    rw- : 同组其他用户
    rw- : 其他组的其他用户(mysql用户)

    create table cite(citing int, cited int) row format delimited fields terminated by ',' stored as textfile; //sequencefle

    r -> 4
    w -> 2
    x -> 1
    chmod 644 文件名 rw-r--r--
    5、Excel表格如何转化为CSV文件
    1、打开Excel文件 -> 另存为 -> CSV(逗号分隔)
    6、更改文件编码格式
    1、用记事本/编辑器 打开,文件->另存为->选择编码
    5、数据导出
    1、作用
    将数据库中表的记录导出到系统文件里
    2、语法格式
    select ... from 表名
    into outfile "/var/lib/mysql-files/文件名"
    fields terminated by "分隔符"
    lines terminated by "n";
    3、把MOSHOU库下的sanguo表英雄的姓名、攻击值、国家导出来,sanguo.txt
    select name,gongji,country from MOSHOU.sanguo
    into outfile "/var/lib/mysql-files/sanguo.txt"
    fields terminated by " "
    lines terminated by "n";
    $ sudo -i
    $ cd /var/lib/mysql-files/
    $ ls
    $ cat sanguo.txt
    4、将mysql库下的user表中 user、host两个字段的值导出到 user.txt
    select user,host from mysql.user
    into outfile "/var/lib/mysql-files/user.txt"
    fields terminated by " "
    lines terminated by "n";

    load data (local) inpath 'cite75_99.txt' overwrite into table cite;//若不加local则默认为HDFS路径

    本节完!

    select * from cite limit 10;

    show tables;
    describe cite;

    select count(1)/count() from cite; //count(1)相当于SQL中的count()

    create table cite_count (cited int, count int);

    insert overwrite table cite_count select cited , count(citing) from cite group by cited;

    select * from cite_count where count > 10 limit 10;

    drop table cite_count;

    create table page_view(viewTime int, userid bigint,
    page_url string, referrer_url string,
    ip string comment 'ip address of user')
    comment 'this id the page view table'
    partitioned by (dt string, country string)//注意table中的列不能和partition中的列重合
    clustered by (userid) into 32 buckets //桶
    row format delimited
    fields terminated by ','
    collection items terminated by '02'
    map keys terminated by '03'
    lines terminated by 'n'
    stored as textfile;

    //取样
    select avg(viewTime) from page_view tablesample(bucket 1 out of 3 [on id]);

    //创建外部表,指定目录位置,删除外部表时会删除元数据,表中的数据需手动删除
    create external table page_view(viewTime int, userid bigint,
    page_url string, referrer_url string,
    ip string comment 'ip address of user')
    location 'path/to/existing/table/in/HDFS';
    //修改表
    alter table page_view rename to pv;
    alter table pv add columns (newcol string);
    alter table pv drop partition (dt='2009-09-01');

    show tables 'page_.*';

    load data local inpath 'page_view.txt'
    overwrite into table page_view
    partition (dt='2009-09-01',country='US');

    在hive的shell上执行unix命令:命令前加感叹号(!),命令尾加分号(;).
    hive> ! ls ;
    hive> ! head hive_result;

    //执行查询:
    insert overwrite table query-result; //eg: insert overwrite table query_result select * from page_view where country='US';
    insert overwrite (local) directory '/hdfs-dir(local-dir)/query_result' query;
    select country , count(distinct userid) from page_view group by countey;

    //子查询,只能在from子句中出现子查询
    select teacher, max(class-num) from
    (select teacher, count(classname) as class-num from classinfo group by teacher)subquery
    group by teacher;

    //连接
    select pv., choice., f.friends from page_view pv
    join user u on (pv.userid=u.id)
    join friends-list f on (u.id=f.uid);

    //多表插入
    create table mutil1 as select id, name from userinfo;
    create table mutil2 like mutil1;
    from userinfo insert overwrite table mutil1 select id, name
    insert overwrite table mutil2 select count(distint id),name group by name;

    //创建视图
    create view teacher_classnum as select teacher, count(classname) from classinfo group by teacher;

    本文由澳门新葡8455最新网站发布于数据库管理,转载请注明出处:焚薮而田配置hive时现身无法加载自身修正的hiv

    关键词: