【问题标题】:What is the difference between 'InputFormat, OutputFormat' & 'Stored as' in Hive?Hive 中的“InputFormat、OutputFormat”和“Stored as”有什么区别?
【发布时间】:2017-07-13 23:06:51
【问题描述】:

我是 Bigdata 的新手,目前正在学习 Hive。我将 Hive 中 InputFormat 和 OutputFormat 的概念理解为 SerDe 的一部分。我还了解到“存储为”用于以特定格式存储文件,就像 InputFormat 一样。 但我不明白使用“InputFormat、OutputFormat”和“Stored as”之间的显着区别是什么。

感谢任何帮助。

【问题讨论】:

    标签: hadoop hive hiveql hive-serde


    【解决方案1】:

    Hive 有很多关于如何存储数据的选项。您可以使用 external 存储,Hive 将只包装来自其他地方的一些数据,或者您可以从 hive 仓库 中创建独立表。输入和输出格式允许您指定这两种类型表的原始数据结构或数据的物理存储方式。在您的客户端,您将继续使用 sql 处理表,但在低级别上,它将是文本文件或序列文件或 hbase 表或其他一些数据结构。

    InputFormat 和 OutputFormat - 允许您描述原始数据结构,以便 Hive 可以将其正确映射到表视图

    SerDe - 表示将数据从表视图实际转换为低级输入输出格式结构的类,反之亦然

    一般你的流程是这样的:HDFS 文件 --> InputFileFormat --> Deserializer --> Row object --> Serializer --> OutputFileFormat --> HDFS files

    存储为 - 指定这样的存储格式,包括 Hive 中新表的输入和输出格式

    这些属性确实会影响性能、整体大小、数据模式演变支持或启用 ACID 等功能。您可以按照本文中描述的步骤来查看底层的工作情况并获取有关最常用格式的一些一般信息 - https://oyermolenko.blog/2017/02/16/structuring-hadoop-data-through-hive-and-sql

    【讨论】:

    • 我已经查看了您提供的信息。我现在清楚了。感谢您的时间。
    • 如此明确的答案-希望官方文档以这种方式解释它!非常感谢
    • @AbhinandanDubey 感谢您的反馈。关于文档,我 100% 同意你的看法,不幸的是,这个问题存在于所有大数据解决方案中。
    • @Alex 我可以有不同的 InputFormat 和 OutputFormat 吗?例如XML 输入格式和 JSON 输出格式?
    • @Bala 不要认为它会起作用。针对单个实体的输入和输出格式 - 表。您不能在同一个文件中读取 XML 数据和写入 Json 数据。两种格式都应保持同步处理文件的逻辑
    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2015-12-26
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多