我读了很多关于hadoop的数据格式的书,现在似乎明白了,根据您使用的软件包的不同,最高级的格式是orc(hortonworks支持良好)或parquet(cloudera支持良好)。
现在大多数初学者的示例/教程都包含简单的csv数据。每行一个条目。他们通常将csv导入一个类似sql的结构(hive),而不将其保存为orc。
hadoop似乎也支持json,但是没有很好的集成。另外,根据一篇综述文章,json是一种糟糕的格式,因为它不能按行分割成块。json行似乎不受本机支持。
我的数据是电影元数据,如下所示:
{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模式一起使用,也可以不与hcatalog模式一起使用。但我只在没有列表的简单列数据上使用了这两种方法(在sql中,这需要一些外键表)。
在导入之前,也可以将数据分割成多个不同的文件—模拟sql中的外键关系。或者,如果可能的话,我们总是将紧密耦合的数据保存在一个文件中吗?
我的心理问题似乎是,我不理解整个转换过程:我应该将数据存储到文件中的格式,然后可以使用表格抽象导入文件,保存为另一个文件(ocr),然后用不同域的语言(如hive或pig之类的sql)查询该文件,可能会转换成mapreduce或其他中间层(spark)。
免责声明:我使用hadoop作为整个数据挖掘环境的名称,包括所有查询api,如hive和pig,而不仅仅是文件分发系统。
1条答案
按热度按时间tp5buhyn1#
我是这个hadoop/hive世界的新手,所以我不能回答您所有的问题,但是我能够按照这个示例将json每行格式转换为orc格式。
希望对你有帮助。