【大数据基础实践】(六)数据仓库Hive的基本操作_熟悉hive的基本操作(1)


##### 5.1.3 配置MySql为hive元数据存储数据库


进入mysql shell


sudo mysql 或 sudo mysql –u root –p 命令,回车后会提示输入密码,前者输入当前系统用户密码,后者是输入 mysql root 用户密码一般为空,回车进入 mysql 命令行。这里 root是 mysql 安装时默认创建的用户,不是 Ubuntu 系统的 root 用户。


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701133807227.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


新建一个数据库用来保存hive元数据(hive\_metadata\_zqc)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701133836204.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701133843843.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


1. 配置mysql允许hive接入  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701133857759.png)  
 将所有数据库的所有表的所有权限赋给新建的hive\_zqc用户,hive\_zqc、'hive’是后续操作中要对 hive-site.xml 文件配置的连接到 MySQL 数据库的用户名、密码,由你自己定义;

 刷新mysql系统权限关系表  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701133916332.png)  
 exit 退出  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701133942120.png)
2. 配置hive

 下载mysql jdbc包https://dev.mysql.com/downloads/connector/j/ ;

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134052236.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134058640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134103346.png)  
 解压jdbc包后,将其中的jar包拷贝至hive安装目录下lib文件夹中  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134146174.png)  
 进入/usr/local/hive/conf 目录。将hive-default.xml.template 重命名为hive-default.xml 保存着各个配置参数的默认值。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134211987.png)  
 新建一个hive-site.xml 配置文件,并添加如下内容,该文件内容会覆盖原默认值  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134227422.png)  
 箭头标记处说明:hive\_metadata\_zqc 是前面步骤 MySQL 里新建的 database、hive\_zqc和 hive 是连接数据库的用户名以及密码;  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134243186.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)



javax.jdo.option.ConnectionURL jdbc:mysql://localhost:3306/hive_metadata_zqc?createDatabaseIfNotExist=true JDBC connect string for a JDBC metastore
    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive_zqc</value>
    <description>username to use against metastore database</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
    </property>

3. 初始化元数据库,启动 Hive,进入 Hive 运行时环境

 初始化元数据库,不然有可能会报错。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134336410.png)  
 可能出现错误  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134347598.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 原因:com.google.common.base.Preconditions.checkArgument 这是因为 hive 内依赖的 guava.jar 和hadoop内的版本不一致造成的。

 解决方法:查看hadoop安装目录下 share/hadoop/common/lib 内 guava.jar 版本,查看 hive安装目录下lib内guava.jar的版本,如果两者不一致,删除版本低的,并拷贝高版本的。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134405563.png)  
 两个版本一样了  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021070113442931.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 在进行一次初始化元数据库  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/202107011344429.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 成功了!
4. 启动Hive

 启动hive 之前,请先启动hadoop集群(start-dfs.sh)和确保MySQL服务正常运行。“hive”命令启动 hive。  
 启动hadoop集群

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134529780.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 启动mysql  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134538450.png)  
 启动hive  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701134553998.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


#### 5.2 Shell进行实验内容


表1 student\_zqc:




| Name | Sex | Birth | Dept | Uid |
| --- | --- | --- | --- | --- |
| Liuyi | F | 2002/11/26 | CS | 180301 |
| Chener | F | 2001/6/11 | CS | 180302 |
| Zhangsan | M | 2002/9/21 | CS | 180303 |
| Lisi | F | 2001/1/26 | SE | 180201 |


表2 grade\_zqc:




| Uid | Course | Grade |
| --- | --- | --- |
| 180301 | Chinese | 90 |
| 180301 | Math | 58 |
| 180301 | English | 39 |
| 180302 | Chinese | 91 |
| 180302 | Math | 95 |
| 180302 | English | 75 |
| 180303 | Chinese | 60 |
| 180303 | Math | 58 |
| 180303 | English | 53 |
| 180201 | Chinese | 62 |
| 180201 | Math | 43 |
| 180201 | English | 74 |


##### 5.2.1 新建一个数据库;


新建一个数据库db\_xxx,添加扩展参数:日期、学号、姓名;使用该数据库做后续操作;设置命令行显示当前使用的数据库,请保证后续操作都能显示。


创建的时候添加了日期,学号,姓名,以及存放路径


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135215581.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135220992.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.2 新建表


新建student\_xxx分区表(分区字段Dept)和grade\_xxx内部表,分别查看表结构和存储路径;(字段类型自定义)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135304175.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135310658.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135319413.png)


##### 5.2.3 添加分区


在表student\_zqc中添加两个分区Dept=’CS’和Dept=’SE’,从本地导入数据到student\_xxx表的两个分区中,分别查看两个分区所有记录,查看表数据存储目录;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135403310.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 从文件中加载数据,load data  
 语法 :



LOAD DATA [LOCAL] INPATH ‘filepath’ [OVERWRITE] INTO TABLE tablename


首先在本地主目录下创建数据文件 input.txt,并上传到 HDFS 中。  
 注意分隔符要跟你表设置一致。


1. 本地创建两个文件  
 input1.txt  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135435913.png)  
 input.txt  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135441833.png)
2. 将两个文件上传到HDFS  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135454426.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)
3. 在hive中加载  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135501938.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)
4. 查看是否加载成功 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135618932.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.4 导入grade\_zqc


从HDFS导入数据到grade\_xxx表中,查看grade\_xxx表所有记录,查看表数据存储目录;


本地创建表 input3.txt  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135722342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 上传到hdfs  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135729543.png)  
 加载到hive中  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135742737.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701135801169.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.5 统计男、女生人数



select sex,count(1) from student_zqc group by sex;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140148279.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.6 统计每个学生所有科目的总分以及平均分


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140223823.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)



select uid,avg(grade) from grade_zqc group by uid;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140249899.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.7 统计每个科目有多少人以及每个科目平均成绩


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140318875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140327165.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.8 查询chinese科目得分排前两名学生学号和分数;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140349243.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.9 创建一个新表rank\_zqc保存CS系每个学生信息和科目总分,按成绩降序排序,并查询结果;


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140422434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140433912.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140438897.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140445924.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140454712.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140459324.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140506297.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140517615.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140522851.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140528996.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140534899.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.10 统计每个系所有科目平均成绩在所有系中的占比。


例如CS系Chinese科目平均成绩在所有系的比例是1.06。


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140603616.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140609854.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140632604.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140640963.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140647608.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021070114065532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140701222.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140706893.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.11 统计每个系每个科目考试不合格学生的占比。


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140733688.png)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140744219.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140750746.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


##### 5.2.12 删除分区,删除表,删除库,退出Hive。(删除操作请谨慎!)


查看表分区  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140818133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 删除分区  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140827878.png)  
 删除表  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140838908.png)  
 删除库  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140847665.png)  
 退出  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021070114085363.png)


#### 5.3 JavaApi进行实验内容


编写一个UDF,函数名UDFXxx,查询学生(输入字段:student\_xxx.Birth)出生天数。给出定义和使用UDF的完整流程和截图。


添加包


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140927667.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140932753.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210701140939279.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTMwNDUwMw==,size_16,color_FFFFFF,t_70)



import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class UDFzqc extends UDF{
public final static DateTimeFormatter DEFAULT_DATE_FORMATTER = DateTimeFormat.forPattern(“yyyy/MM/dd”);
private Text result = new Text();
public Text evaluate(Text birthday) throws ParseException{
DateTime dateTime = null;
try {
dateTime = DateTime.parse(birthday.toString(), DEFAULT_DATE_FORMATTER);
}catch(Exception e) {
return null;
}
return evaluate(dateTime.toDate());
}

public Text evaluate(Date birthday) throws ParseException{
    DateTime dateTime = new DateTime(birthday);
    return evaluate(new IntWritable(dateTime.getYear()), new IntWritable(dateTime.getMonthOfYear()),
            new IntWritable(dateTime.getDayOfMonth()));
}

public Text evaluate(IntWritable year, IntWritable month,IntWritable day) throws ParseException{
    result.set(getDays(year.get(), month.get(), day.get()));
    return result;

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

, day.get()));
return result;

[外链图片转存中…(img-Z1DytTN6-1714732933055)]
[外链图片转存中…(img-fYgOsFRo-1714732933056)]
[外链图片转存中…(img-3DsNMlub-1714732933056)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值