Hive/hbase/sqoop的基本使用教程~

###Hbase基本命令
start-hbase.sh     #启动hbase
hbase shell      #进入hbase编辑命令

list          #列出当前所有的表(tablename)
create 'test','name'        #创建一张名为test的表,并且表中只有一列 name
put 'test','row1','name:zhangsan','zs'       #往test表中插入数据,行标识为row1
put 'test','row2','name:lisi','ls'        #往test表中插入数据,行标识为row2

插入数据时,行标识可以相同,例如:
put 'test','row1','name:zhangsan','zs'
put 'test','row1','name:zhangsan1','zs1'     #两条数据都存入数据库

如果行标识相同,列数据也相同时 后面的value值会被覆盖
put 'test','row1','name:zhangsan','zs'
put 'test','row1','name:zhangsan','ls'    #只会有一条数据,value值为ls的存入数据库

scan 'test'      ##查看当前test表中数据信息
get 'test','row1'      #查看test表中行标识为row1的数据信息

delete 'test','row1','name:zhangsan'     #删除行标识为row1,name:zhangsan 的数据
disable 'test'     #禁用test表
drop 'test'      #删除test表
exit     #退出hbase shell

#HIVE UDF 用户自定义函数
1、创建maven项目,pom.xml引入如下依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imodule.hive</groupId>
<artifactId>hivedemo</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <dependencies>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
</project>

2、编写Java类,继承 org.apache.hadoop.hive.ql.exec.UDF类 #一个类中可以有多个方法,但是方法名必须为 evaluate,可以进行重载
public class HiveApplication extends UDF

package com.imodule.hive.hivedemo;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.udf.UDFSin;
import org.apache.hadoop.io.Text; /**
* Hello world!
*
*/
public class HiveApplication extends UDF
{
public Text evaluate(String text){
if(text != null){
return new Text("hello,mygirl"+text);
}else{
return new Text("hello,mygirl");
}
} public Text evaluate(String text,String OBJ,int inta){
return new Text(text+OBJ+Integer.valueOf(inta));
} }

  

3、在类中定义函数 ##注意方法名一定要为 evaluate ,入参和出参可以自定义

public Text evaluate(String text){
if(text != null){
return new Text("hello,mygirl"+text);
}else{
return new Text("hello,mygirl");
}
}

  

4、将maven项目打包为jar包

mvn clean  install

5、在linux上输入hive命令,启动hive
***生成临时函数,会话级别的调用

>hive    #进入hive
>add jar /home/imodule/hivedemo-1.0.jar; #上传jar包
>create temporary function myfun as 'com.imodule.hive.hivedemo.HiveApplication'; #取函数调用的别名 myfun
>select mname ,myfun(mname) from m_user1; #调用函数 ps:调用的时候需要使用数据去一一对应方法的参数类型个数 evaluate(String text)
>select 'username',myfun('zs') from m_user1;
>select mname ,myfun(mname,mname,mid) from m_user1; #调用函数 ps:调用的时候需要使用数据去一一对应方法的参数类型以及个数 evaluate(String text,String OBJ,int inta)

  

***生成永久函数,随时都可以调用

>hadoop dfs -mkdir /user/imodule/hive_jars #在hdfs文件系统中创建文件目录 hive_jars
>hadoop dfs -put /home/imodule/hivedemo-1.0.jar /user/imodule/hive_jars/ #将jar上传到hdfs文件系统
>hive #进入hive
>create function myfun as 'com.imodule.hive.hivedemo.HiveApplication' using jar 'hdfs://SHDCL40111:9000//user/imodule/hive_jars/hivedemo-1.0.jar'; #引用hdfs文件系统的jar创建永久函数
>select mname ,myfun(mname) from m_user1; #调用函数 ps:调用的时候需要使用数据去一一对应方法的参数类型个数 evaluate(String text)

  

HIVE的基本操作:

hive  #进入hive命令编辑界面

show  databases; #查看所有的库

show tables;   #查看当前库中的所有的表

create database test;  #创建数据库名为test

create table user1(id int,name String);  #创建一个只有ID,name两个字段的表,hive还可以创建分区表,外部表啥的,这里只演示一个最简单的哈

insert into user1 values(1,'zs');   #往表中插入数据

select * from user1;  #查看表中的数据

insert overwrite table user1  select * from user1 where XXX;  #这是删除操作,xxx是你想保留的数据的条件。

insert overwrite table user1  select * from user1 where 1=0;   #删除user1表中的所有数据

drop table user1 ;  #删除表

###hadoop执行jar的命令:
hadoop jar hadoopDemo-2.7.7.jar /input /output_tmp

hadoop dfs -mkdir /input           #在hdfs文件系统中创建文件目录 /input

hadoop dfs -put file.txt /input    #将本地的file.txt文件上传到hadoop的hdfs文件系统

hadoop dfs -get /input/*           #从hadoop系统中下载input目录下的所有文件到本地

hadoop dfs -rmr /input/*          #删除hadoop的hdfs文件系统中的 input目录下的所有文件

###sqoop从mysql库中导入数据到hive库

sqoop import \
--connect jdbc:mysql://10.28.85.148:3306/data_mysql2hive?useSSL=false \
--username root \
--password Abcd1234 \
--table m_user2 \
-m 1 \
--hive-import \ #导入hive库命令
--create-hive-table \ #创建hive表命令
--hive-table m_user2 #命名hive库中的表名为 m_user2

  

###测试sqoop的连接

sqoop list-databases \
--connect jdbc:mysql://10.28.85.148:3306/data_mysql2hive \
--username root \
--password Abcd1234

  

最新文章

  1. configuration error-could not load file or assembly crystaldecisions.reportappserver.clientdoc
  2. &lt;转&gt;浅谈DNS体系结构:DNS系列之一
  3. Each child in an array or iterator should have a unique &quot;key&quot; prop. Check the render method of `CreditCategoryModal`
  4. linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)
  5. Map Resource Definition 中type为 &#39;ArcGIS Server Local&#39;.
  6. 开源项目live555学习心得
  7. Java Web学习笔记(1)
  8. 关于PhpDE zend ide破解方式
  9. JSplitPane demo
  10. JSONP、图片Ping、XMLHttpRequest2.0等跨域资源请求(CORS)
  11. Java笔试题解答
  12. MySQL数据库全备
  13. jenkins忘记密码怎么办?
  14. Knockout 官网学习文档目录
  15. 判断库中为字符串格式的时间是否为最近三个月(Java)
  16. javascript 5.2
  17. oracle 数据定义语言(DDL)语法
  18. info.plist的选项含义
  19. 【JQuery】使用JQuery 合并两个 json 对象
  20. Struts2 学习(三)

热门文章

  1. Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务
  2. 00-python语言介绍
  3. Mac Anaconda 安装
  4. python实现邮件接口——smtplib模块
  5. 拖图UI和纯代码UI
  6. 二、idea + git
  7. java ----&gt; java.lang.NoClassDefFoundError
  8. 20171024xlVBA批量获取PPT\WORD\PDF页数
  9. server2008远程开端口的方法
  10. Web测试要点