设为首页 收藏本站
查看: 1804|回复: 0

[经验分享] 阿杜&eason

[复制链接]

尚未签到

发表于 2017-12-16 20:35:13 | 显示全部楼层 |阅读模式
  1、配置
  1)解压到/opt/moduels
  2)配置HIVE_HOME
  3)配置HADOOP_HOME和HIVE_CONF_DIR到hive-env.sh
  4)在HDFS文件系统上创建HIVE元数据存储目录并赋予权限
  5)bin/hive  -->使用sql语句
  2、安装MySQL并配置
  1)unzip mysql
  2)rpm -e --nodeps mysql
  3)rpm -ivh mysql-server
  4)cat /root/.mysql_secret
  5)rpm -ivh mysql-client
  6)mysql -uroot -p[password]
  7)set password=password('123456');
  8)update user set Host='%'-> where User='root' and Host = 'localhost';
    9)flush privileges;
    10)tar -zxvf mysql-connector
    11) cp mysql-connector-java /opt/moduels/hive/lib
    12)配置hive-site.xml中URL、DrvierName、UserName、Password    -->端口号3306,DataBase=metastore
    -->https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin
  3、hive基本操作
  1)列分隔符
  ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
  2)加载本地数据
  load data local inpath '/opt/datas/student.txt' (overwrite) into table student;
  3)desc formated(extended) student;
  4)show functions;  -->desc function(extended) substring;
  5)数据的清除  truncate table table_name [partition parition_spec];
  4、一些配置
  1)配置client.header和client.currentdb来显示当前数据库
  2)日志文件配置
  3)set;  -->查看配置信息  -->set hive.root.logger=INFO,console;设置日志信息打印在控制台
  4)常用交互式命令 bin/hive -help(-i,-f,-e)
  5、创建表的三种方式
  1)create table test01(ip string comment '...',user string)
  comment 'access log'
  row format delimited fields terminated by ' '
  stored as textfile
  location '/user/hive/warehouse/logs'
  2)create table test02
  as select ip,user from test01;
  3)create table test03
  like test01;
  6、Hive的数据类型
  1)table ,load   E
  2)select,python  T
  3)sub table    L
  7、Hive中表的类型
  1)管理表    -->  删除表时,会删除表数据以及元数据
  2)托管表(外部表,external)  -->  删除表时,只会删除元数据而不会删除表数据
  3)分区表(partitioned tables) -->  查询时可以通过where子句来指定分区 
  create table dept_partition(deptno int,dname string,loc string)
  partitioned by(event_month string[,event_day string])  -->二级分区
  row format delimited fields terminated by '\t';
  加载数据:
  load data local inpath '/opt/datas/emp.txt' into table emp_partition partition (mouth='201509');
  查询:
  where mouth = '201509';
  注意事项:
  a.自己手动创建分区表文件夹并put数据,并没有将分区元数据写入元数据库,所以无法读取数据,可以手动修复:
  msck repair table dept_partition;
  或者  alter table dept_part add partition(day='20150913');
  b.查看表的分区数:show partitions dept_partition;
  8、导出表的方式
  1)insert overwrite local directory '/opt/datas/hive_exp_emp'  -->去掉local导出到Hdfs文件系统上
  row format delimited fields terminated by '\t'
  collection items terminated by '\n'
  select * from db_hive.emp;
  2)bin/hive -e "select * from db_hive.emp" > /opt/datas/hive_exp_exp.txt  -->没有跑MapReduce任务
  3)scoop  hdfs/hive->rdbms  or  rdbms->hdfs/hive/hbase
  9、Hive中常见的查询 
[WITH CommonTableExpression (, CommonTableExpression)*]    (Note: Only available starting with Hive 0.13.0)SELECT [ALL | DISTINCT] select_expr, select_expr, ...  -->全部和查重  FROM table_reference  [WHERE where_condition]  [GROUP BY col_list]  [ORDER BY col_list]  [CLUSTER BY col_list    | [DISTRIBUTE BY col_list] [SORT BY col_list]  ] [LIMIT number]  1)select t.empno,t.ename,t.deptno from emp t;  -->t
  2)between  -->
  select t.empno,t.ename,t.deptno from emp t where  t.sal between 800 and 1500;
  3)is null/is not null
  select t.empno,t.ename,t.deptno from emp t where comm is null;
  4)group by/having 
  查询每个部门的平均工资
  select avg(sal) avg_sal from emp
  group by deptno;
  查询每个部门中每个岗位的最高薪水
  select t.deptno,t.job,max(t.sal) max_sal from emp t group by t.deptno,t.job;  -->双重分组
  having与where区别
  where 针对单条记录进行筛选
  having针对分组结果进行筛选 
  10、Export/Import
  1)Export  -->将Hive表中的数据导出
    EXPORT TABLE tablename [PARTITION (part_column="value"[, ...])]      TO 'export_target_path' [ FOR replication('eventid') ]    -->path指的为HDFS上的路径  2)Import       IMPORT [[EXTERNAL] TABLE new_or_original_tablename [PARTITION (part_column="value"[, ...])]]      FROM 'source_path'      [LOCATION 'import_target_path']11、sort  1)order by  -->全局排序,一个Reduce  2)sort by  -->每个reduce内部进行排序,全局不是排序  3)distribute by  -->类似MR中的partition,进行分区,结合sort by使用    insert overwrite local directory '/opt/datas/dist_emp'     select * from emp     distribute by deptno    sort by empno asc;  4)cluster by  -->当distribute 和sort字段相同时,使用此方式12、Hive自带function及udf编程  -->user defination function  1)https://cwiki.apache.org/confluence/display/Hive/HivePlugins  2)编程步骤:    a.继承org.apache.hadoop.hive.ql.UDF    b.需要实现evaluate函数    ps.必须有返回类型,常用Text/LongWritable等类型,不推荐使用java类型  3)配置pom.xml文件中的hive-jdbc和hive-exec  4)使用:  add jar /opt/datas/udf-tolower.jar;        create temporary function my_lower as "com.cnblog.hive.udf.LowerUDF";  -->类名      或者 create function myfunc as 'myclass' using jar 'hdfs://hostname/path/to/jar';  -->文件必须在hdfs文件系统上

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424825-1-1.html 上篇帖子: 基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建 下篇帖子: 从零自学Hadoop(23):Impala介绍及安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表