【问题标题】:If data is in CSV format, does that mean it is inherently 'structured data'?如果数据是 CSV 格式,这是否意味着它本质上是“结构化数据”?
【发布时间】:2015-08-06 18:29:02
【问题描述】:

我正在尝试考虑一些数据的 ETL 流程,这些数据可能会以 CSV 格式从数据源接收。

如果数据要始终采用 CSV 格式,这是否意味着它是“结构化的”正确的?就像我可以将它直接导入数据库并从本质上查询它,对吗?

如果 CSV 文件是结构化数据,那么我可以对其运行 Hive 查询来进行一些转换吗?

将 CSV 文件直接加载到数据库中,然后像 ELT 过程一样进行转换有什么缺点吗?

【问题讨论】:

    标签: etl


    【解决方案1】:

    在谈到从 Hive 查询中读取 CSV 文件时,不确定 ELT 概念是否真的适用。如果 T 很简单,这更像是在单个 INSERT-SELECT 查询中运行 T 和 L。

    首先定义一个指向空 HDFS 目录的 EXTERNAL TABLE。然后将您的 CSV 文件推送到该目录中。现在您可以选择文件内容(当然,前提是表结构映射实际的 CSV 结构),即时转换数据,并将结果插入“托管”Hive 表中—— ORC、SequenceFile、AVRO 等等。

    您可以选择加入其他表(查找、重复数据删除等),但请注意 Hive 优化器仍然非常粗糙,不要期望花哨的查询能够很好地执行(也不是所有简单的查询)。也期待一些尴尬的错误,每次升级都会出现一些令人讨厌的回归。

    但是如果你的 T 需求真的很复杂,并且需要对临时数据集进行多步处理,我建议你学习 Pig 脚本。借助 HCatalog 接口,它可以在最后阶段批量加载 Hive 表。

    ~~

    最后一句话:您的“结构化”CSV 可能包含嵌套的“结构化”字段,例如数组、结构、结构数组。 Hive 支持这些复杂的数据类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2018-06-11
      • 2020-07-29
      • 2019-03-16
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多