实验8HiveUDF

实验8HiveUDF

实验目的及要求

(1)掌握Hive中全局排序Order by、内部排序Sort by的用法及区别。

(2)掌握Hive中Group by分组语句的用法。

(3)了解Hive中Distribute By分区排序、Group By及Cluster By排序的用法与区别。

实验系统环境及版本

  1. Linux Ubuntu 20.04

  2. JDK1.8

  3. Hadoop3.1.0

  4. MySQL8.0.28

  5. Hive3.1.2

实验任务

(1)全局排序Order By与内部排序Sort By的用法及应用的场景。

(2)分组查询Group By的应用场景与基本语法。

(3)排序Cluster By与Distribute By和内部排序Sort By的关系及相关操作。

实验内容及步骤

输入jps检查Hadoop相关进程,Hadoop是否已经启动。若未启动,切换到/usr/local/hadoop/sbin目录下,启动Hadoop。

jps

cd /usr/local/hadoop/sbin

./start-all.sh

在这里插入图片描述

查看MySQL数据库的运行状态。

sudo service mysql status

在这里插入图片描述

如果输出显示MySQL数据库未启动,执行以下启动命令:

sudo service mysql start

开启Eclipse

创建一个Maven工程,groupId输入com.synu.hive,artifactId输入hiveUDF1。

在这里插入图片描述
在这里插入图片描述

在pom.xml中导入依赖:

<dependencies>

<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-exec</artifactId>

<version>2.1.0</version>

</dependency>

</dependencies>

在这里插入图片描述

创建一个Java类Hive_UDF:

package hiveUDF1;

import org.apache.hadoop.hive.ql.exec.UDF;

public class Hive_UDF extends UDF {

public String evaluate (final String s) {

if (s == null) {

return null;

}

return s.toLowerCase();

}

}

在这里插入图片描述

编写调试Java程序后,在Maven工程hiveUDF上右键单击,在弹出菜单中单击【Run As】命令,在弹出界面中单击【Maven install】按钮,生成JAR包。更名该JAR包并将其存放在本地/opt/datas/目录下。

cp /home/hadoop/workspace/hiveUDF1/target/hiveUDF-0.0.1-SNAPSHOT.jar /opt/datas/hiveudf1.jar

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

切换到/usr/local/hive/bin目录下,开启Hive,并切换到hivedwh数据仓库。

hive

use hivedwh;

在这里插入图片描述

将JAR包添加到Hive的classpath。

add jar /opt/datas/hiveudf.jar;

在这里插入图片描述

在Hive界面创建自定义函数myLower:

create temporary function myLower as “hiveUDF.Hive_UDF”;

在这里插入图片描述

创建test表,并导入test.txt文件中的数据。

hive> create table test(id int, name string)

> row format delimited fields terminated by ‘\t’;

hive> load data local inpath ‘/opt/datas/test.txt’ into table test;

在这里插入图片描述

使用自定义函数myLower查询表test的数据:

select * from test;

select id, name, myLower(name) lowername from test;

在这里插入图片描述

删除自定义函数:

drop temporary function myLower;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值