2021.9.21 Hive元数据
一、今日学习内容
1.
一、什么是元数据
又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,用来自持如只是存储位置、历史数据、资源查找、文件记录等功能。
二、Hive Metadata
- Hive Metadata即Hive的元数据。
- 包含用Hive创建的database、table、表的位置、类型、属性,字段顺序类型等元信息。
- 元数据存储在关系型数据库中。如hive内置的Derby、或者第三方如MySQL等。
- Metastore即元数据服务。Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由metastore再去连接连接MySQL数据库来存取元数据。
-
有了metastore服务, 就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只
需要连接metastore服务即可。某种程度上也保证了hive元数据的安全。
import javax.swing.*; public class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); } catch ( ArithmeticException e) { System.out.println("被0除. "+ e.getMessage()); } catch (Exception e) { if (e instanceof ArithmeticException) System.out.println("被0除"); else { System.out.println(e.getMessage()); } } finally { JOptionPane.showConfirmDialog(null,"OK"); } } }
被零除 输出by zero
谁先出异常,就先去catch捕捉那个异常,try。。catch注释后,发现finally都会执行。
1.把可能会发生错误的代码放进try语句块中。
2.当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。
catch语句块中的代码用于处理错误。
3.当异常发生时,程序控制流程由try语句块跳转到catch语句块。
4.不管是否有异常发生,finally语句块中的语句始终保证被执行。
5.如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。
2.
public class ThrowDemo { public static void main(String[] args) { try { double data = 100 / 0.0; System.out.println("浮点数除以零:" + data); if(String.valueOf(data).equals("Infinity")) { System.out.println("In Here" ); throw new ArithmeticException("除零异常"); } } catch(ArithmeticException e) { System.out.println(e); } } }
因为浮点数在除0时,他不是把他当做0而是看做是最小值,因此得出的结果为极大值。
多态可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。
使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。
将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。
资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况
finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。
注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。
二、遇到的问题
没有遇到什么问题
三、明日计划
明天继续学习