一、Hive:
1、HIVE工作原理
1)用户创建数据库、表信息、存储在hive的元数据库中;
2)向表中加载数据,元数据记录hdfs文件路径与表之间的映射关系;
3)执行查询语句,首先经过解析器、编译器、优化器、执行器,将指令翻译成mapreduce,提交到yarn上执行,最后将执行返回的结果输出到用户交互接口。
2、HIVE内部表和外部表的区别:
1)内部表:加载数据到HIVE所在的hdfs目录,删除时,元数据和数据文件都删除
2)外部表:不加载数据到hive所在的hdfs目录,删除时,只删除表结构。
3)这样外部表相对来说更加安全,数据组织也更加灵活,方便共享源数据。
3、hive的四种存储格式:
1)TextFile:数据不做压缩,磁盘开销大
2)RCFile:一种行列存储相结合的存储方式,数据按行分块,块数据按行存储
3)ORCFile:类似于RCFile,是其改良版本。 ORC不论是读写,效率都相对较高。
4)Parquet:能够很好的压缩,有很好的查询性能,支持有限的模式演进。
二、Spark:
1、RDD因为是面向对象编程,直接存储的java对象,相对于结构化数据处理相对于sql来比更加麻烦。
比较重要的有:
1)RDD与依赖关系;(宽依赖和窄依赖)
2)如何区分依赖关系
3)RDD有哪些算子,与其关系有哪些
4)依赖关系什么时候确定
以上问题可参考
https://blog.csdn.net/yz13731876/article/details/113937390
2、Dataframe,其中信息中包含着结构化信息,即schema。但每一列的值没法直接访问。
3、Dataset和DataFrame有用完全相同的成员函数,区别在于每行的数据类型不同。
4、Dataset中,每一行是什么类型不一定,在自定义了case class之后可以很自由的获得每一行的信息,可以看出,dataset在需要访问列中的每个字段时非常方便。