我读了很多关于hadoop的数据格式,目前似乎明白,根据你使用的软件包,最先进的格式是ORC(在Hortonworks上得到很好的支持)或Parquet(在Cloudera上得到很好的支持)。
现在大多数初学者的示例/教程都包含简单的csv数据。每行一个条目。他们经常将CSV导入类似SQL的结构(Hive),而不将其保存为ORC。
JSON似乎也受到Hadoop的支持,但是not so well integrated。另外根据to an overview article JSON格式不好,因为它不能按行拆分成块。 JSON行does not seem to be supported natively。
我的数据是电影元数据,如下所示:
{title: "Movie 1", rating: 4.3, tags: ["Romance", "Music"],
actors: ["Leonardo di Caprio"], source: "example.com"}
{title: "Movie 2", cinema_viewers: 10000000, budget: 10000000,
categories: ["Action"], role_importance: {'Adam Sandler': 2},
source: "example.net"}
如果我有JSON行结构,我应该如何导入我的数据?这在很大程度上取决于我想要使用的查询引擎吗?到目前为止,我只了解了Hive和Pig。似乎两者都可以与HCatalog架构一起使用或不使用。但是我只在没有列表的简单列数据上使用它们(在SQL中需要一些外键表)。
还可以在导入之前将数据拆分为多个不同的文件 - 像在SQL中一样模拟外键关系。或者,如果可能,我们是否始终将紧密耦合的数据保存在一个文件中?
我的心理问题似乎是,我不了解整个转型过程:我应该将数据存储到文件的格式,然后可以使用表格抽象导入,保存为另一个文件(OCR)然后,将使用来自不同域(像Hive或Pig的SQL)的语言查询,这些语言可能会被转换为MapReduce或其他一些中间层(Spark)。
免责声明:我使用Hadoop作为整个数据挖掘环境的名称,包括所有查询API,如Hive和Pig,不仅适用于文件分发系统。
答案 0 :(得分:0)
我是这个Hadoop / Hive世界的新手,所以我无法回答你的所有问题,但是我能够将 json的每行格式转换为< em> ORC格式遵循此example。
我希望它有所帮助。