首页 文章

如果数据是CSV格式,这是否意味着它本身就是'structured data'?

提问于
浏览
0

我正在尝试通过ETL过程来考虑一些可能以CSV格式从数据源接收的数据 .

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

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

将CSV文件直接加载到数据库中,然后像ELT过程那样进行转换是否有任何缺点?

1 回答

  • 1

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

    首先定义一个指向空HDFS目录的EXTERNAL TABLE . 然后将CSV文件推送到该目录中 . 现在您可以选择文件内容(假设表结构当然映射了实际的CSV结构),即时转换数据,并将结果插入"managed" Hive表 - ORC,SequenceFile,AVRO等等 .

    您可以选择加入其他表(查找,重复数据删除等),但要注意Hive优化器仍然非常粗糙,不要指望花哨的查询表现良好(也不是所有简单的查询) . 还期待一些尴尬的错误,以及每次升级时的一些令人讨厌的回归 .

    但是如果您的T要求非常复杂,并且需要使用临时数据集进行多步处理,我建议您学习Pig脚本 . 使用HCatalog接口,它可以在最后阶段批量加载Hive表 .

    ~~

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

相关问题