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. Codeforces 1005 E2 - Median on Segments (General Case Edition)

    E2 - Median on Segments (General Case Edition) 思路: 首先我们计算出solve(m):中位数大于等于m的方案数,那么最后答案就是solve(m) - s ...

  2. BZOJ 3585 mex

    题目已经没有了 思路: 莫队+分块 首先有一个结论:所有的答案都在0到n之间,用反正法就能证明,所以所有大于n的数都可以看成n 离线,对询问区间进行莫队,再对答案的范围0到n进行分块 复杂度(n+2* ...

  3. Python全栈开发-Day2-Python基础2

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  4. Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示?

    Android 如何将手机屏幕投影到 PC 屏幕上或者投影仪上做演示? 公司开发款APP,要给领导演示,总不能用手机面对面演示吧.所以找了好久,找到一款体验超好的: Total Control-帮助你 ...

  5. legend2---开发日志8(thinkphp和vue如何配合才能达到最优)

    legend2---开发日志8(thinkphp和vue如何配合才能达到最优) 一.总结 一句话总结:凡是php可以做的,都可以先在后端处理好数据,然后再丢给前端 凡php可以做的,都可以先在后端处理 ...

  6. patch-test-and-proc

    实验环境 Ubuntu 14.04.5 LTS Linux - 4.15.6 为单个文件进程补丁操作 在桌面 Desktop 建立文件夹 patch ,作为实验用,然后进入patch 文件夹.建立测试 ...

  7. p1474 Money Systems

    就是背包,用O(n*m)的一维. #include <iostream> #include <cstdio> #include <cmath> #include & ...

  8. thinkphp 中MVC思想

    ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V) ...

  9. redis 基本指令

    redis-cli开启redis客户端 1. set key value // 设置key-value 2. get key // 获取key 3. delete key [] // 删除key 4. ...

  10. bat语法需要注意的地方

    if else 格式                            if exist C:\Python27  ::空格  (                      ::(与if在同一行  ...