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

  

Hive/hbase/sqoop的基本使用教程~的更多相关文章

  1. Hive/Hbase/Sqoop的安装教程

    Hive/Hbase/Sqoop的安装教程 HIVE INSTALL 1.下载安装包:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3 ...

  2. Centos搭建mysql/Hadoop/Hive/Hbase/Sqoop/Pig

    目录: 准备工作 Centos安装 mysql Centos安装Hadoop Centos安装hive JDBC远程连接Hive Hbase和hive整合 Centos安装Hbase 准备工作: 配置 ...

  3. 3.12-3.16 Hbase集成hive、sqoop、hue

    一.Hbase集成hive https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 1.说明 Hive与HBase整合在一起 ...

  4. Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出

    一.使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWFyb25oYWRvb3A=/ ...

  5. hbase结合hive和sqoop实现数据指导mysql

    hive综合hbase两个优势表中的:     1.实现数据导入到MYSQL.     2.实现hbase表转换为另外一张hbase表.  三个操作环节:      1.hbase关联hive作为外部 ...

  6. sqoop的导入|Hive|Hbase

    导入数据(集群为对象) 在Sqoop中“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用import关键字. 1 RDBMS到HD ...

  7. sqoop1.4.6从mysql导入hdfs\hive\hbase实例

    //验证sqoop是否连接到mysql数据库sqoop list-tables --connect 'jdbc:mysql://n1/guizhou_test?useUnicode=true& ...

  8. CDH5上安装Hive,HBase,Impala,Spark等服务

    Apache Hadoop的服务的部署比較繁琐.须要手工编辑配置文件.下载依赖包等.Cloudera Manager以GUI的方式的管理CDH集群,提供向导式的安装步骤.因为须要对Hive,HBase ...

  9. Hive HBase Integration 集成

    官方文档:https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 1.在hive/lib目录下找到hive-hbase-ha ...

随机推荐

  1. mui体验理解

    1.      mui简介 1.1  缘起 1.基于jq的jqmobile,性能低的无法忍受,且UI难看 2.bootstrap这种响应式设计,性能在低端机不足,而且UI风格一看就是网页,不是App的 ...

  2. 第 8 章 容器网络 - 059 - 安装配置 flannel

    安装配置 flannel 1) build flannel flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build. 不过用于做 build ...

  3. QQ Protect 的删除

    删的好费劲,驱动程序,服务,各个东西都在相互保护. 最后总结: 1)进安全模式 2)删除 下面的文件 c:\program files\tencent\qqlite\shellext\qqshelle ...

  4. java ----> 类转换异常

    com.rr.domain.Department_$$_javassist_5 cannot be cast to javassist.util.proxy.Proxy 两个原因: 1.懒加载 在we ...

  5. tomcat ----> 源码关联/编译/....

    今天在搞Servlet时想看下tomcat Servlet-API.jar的源码,按照惯性思维用以往关联SSH2框架的源码的方式去做但是结果没有成功,尝试过换不同的文件夹,起初怀疑可能是路径太深关联不 ...

  6. proc-virtual-file-system

    内核代码中分别找出一处 proc 和 seq_file 的完整使用过程,记录下来 在用户空间进行相应"读"."写" 介绍 Proc 虚拟文件系统 操作 proc ...

  7. Div不用float布局

    CSS代码 .wrapper1_4 { width: 100%; /* 也可以固定宽度 */ height: 26px; } .wrapper1_4 > .left { display: inl ...

  8. github入门书籍总结

    目录 第一章 由来 第二章 基本知识简介 第三章 初始操作 3.1 注册账号 3.2 创建仓库 第四章 具体实际操作 4.1 初始化仓库及相关操作 4.2 分支操作 4.3 消除冲突 4.4 压缩历史 ...

  9. Python图片缩放

    from PIL import Image def size(jpg,now_size): im = Image.open(jpg) width, height = im.size if width& ...

  10. 论raw_input与input之间的缠缠绵绵

    例子1:py2.7中,raw_input输入整数,返回的是str. input1=raw_input("raw_input:") print(type(input1)) print ...