Hadoop Hive如何存储数据以及什么是SerDe?

Hadoop Hive如何存储数据以及什么是SerDe?,hadoop,hive,Hadoop,Hive,查询表时,SerDe将将文件字节中的一行数据反序列化为配置单元内部用于操作该行数据的对象。执行INSERT或CTA时(请参见第441页的“导入数据”),表的SerDe将将数据行的配置单元内部表示形式序列化为写入输出文件的字节 塞德是图书馆吗 配置单元如何存储数据(即存储在文件或表中) 谁能把粗体的句子解释清楚吗? 我是新来的蜂巢 答复 是的,SerDe是一个内置于Hadoop API中的库 Hive使用像HDFS或任何其他存储(FTP)这样的文件系统来存储数据,这里的数据是以表的形式(有行和列)

查询表时,SerDe将将文件字节中的一行数据反序列化为配置单元内部用于操作该行数据的对象。执行INSERT或CTA时(请参见第441页的“导入数据”),表的SerDe将将数据行的配置单元内部表示形式序列化为写入输出文件的字节

  • 塞德是图书馆吗
  • 配置单元如何存储数据(即存储在文件或表中)
  • 谁能把粗体的句子解释清楚吗? 我是新来的蜂巢 答复

  • 是的,SerDe是一个内置于Hadoop API中的库
  • Hive使用像HDFS或任何其他存储(FTP)这样的文件系统来存储数据,这里的数据是以表的形式(有行和列)存储的
  • SerDe-Serializer,反序列化程序指示配置单元如何处理记录(行)。Hive还支持处理半结构化(XML、电子邮件等)或非结构化记录(音频、视频等)。例如,如果您有1000 GB的RSS提要(RSS XML)。您可以将它们摄取到HDFS中的某个位置。您需要基于XML结构编写一个自定义SerDe,以便配置单元知道如何将XML文件加载到配置单元表或其他方式

  • 有关如何编写SerDe的更多信息,请阅读此方面的内容,我们可以将Hive视为某种数据库引擎。此引擎正在处理根据记录构建的表
    当我们让Hive(以及任何其他数据库)以其自身的内部格式工作时,我们并不在意
    当我们希望Hive将我们自己的文件作为表(外部表)处理时,我们必须让他知道如何将文件中的数据转换为记录。这正是SerDe的角色。您可以将其视为使配置单元能够读取/写入数据的插件
    例如,您希望使用CSV。下面是CSV_Serde的示例 方法serialize将读取数据,并假设数据为CSV,将其切分为多个字段

    方法反序列化将获取一条记录并将其格式化为CSV。

    我认为上面的概念是序列化和反序列化。串行化是在写入时完成的,结构化数据被串行化为位/字节流进行存储。读取时,数据从位/字节存储格式反序列化为读取器所需的结构。例如,Hive需要看起来像行和列的结构,但hdfs将数据存储在位/字节块中,因此写时序列化,读时反序列化。

    Hive还可以使用 (1) 复杂数据类型(结构、数组、联合) (2) 使用SerDe


    SerDe接口允许我们指示hive如何处理记录。序列化程序将获取配置单元一直在处理的java对象,并将其转换为配置单元可以存储的内容,反序列化程序将获取记录的二进制表示,并将其转换为配置单元可以操作的java对象。

    因此serDe将(反序列化)将HDFS上的文件中的数据字节转换为对象,以便将其存储在配置单元表中。Hdfs(文件)--反序列化---->(表)配置单元。我说的对吗?hive中没有2个存储,Hives存储是HDFS中的实际文件。SerDe将数据从文件反序列化到对象,以便可以使用类似SQL SELECT的语法对其进行查询。并且可以使用类似SQL插入的语法将更多数据添加到这些文件中。唯一的存储是驻留在Hive的HDFS中的文件。hi shazin,您的意思是,没有SerDe,就无法查询Hive表。配置单元将数据存储在HDFS上的文件(表)中,当您查询数据和希望插入更多数据时,SerDe(反序列化)会出现。SerDe(序列化)被使用。是的,当前此SerDe由配置单元默认使用MetadataTypedColumnsetSerDe,用于CSV分隔的文件。谢谢David。你能告诉我更多关于数据库引擎如何工作的细节吗,特别是hive。任何博客或pdf?我不知道一个好的来源,如果你能提示我可以帮助的领域。作为起点,我建议阅读MySQL及其可插拔引擎。IMHO是一个具有更透明架构的DB引擎。关于蜂巢-你可以问一些具体的问题,我可能知道。