我们最近刚刚开始研究pig,并且在结构化数据上找出它的语法时遇到了一个挑战。给出下面的示例数据模型,哪个更适合这个问题,hive还是pig,或者“other”?
数据模型:
Item
> id<long>
> description<string>
> source<collection of following>
> source_id<long>
> source_name<string>
> relevant_link<collection of strings>
> link_id<string>
Link
> link_id<string>
> metadata1<string>
> metadata2<string>
常见操作:
将各种格式的数据导入到此格式
查询(排序、聚合、采样、汇总)数据(最好由一个不全是该语言Maven的团队进行)
使用各种过滤器以各种格式连接和导出
这是一个大型数据集(150-500gb原始文本数据)的基本数据操作。
议题/问题:
pig给我们带来了一个挑战,让我们加入到这个环节(pig中的收藏是一袋袋袋,变得相当抽象)。
hive是否擅长/更擅长管理这些集合?
我们期望进行大量的“数据转换”活动,但是由于我们可以轻松地将数据以类似sql的格式进行匹配,这是否使hive成为一个更易于使用的解决方案?
1条答案
按热度按时间esyap4oy1#
你可以试试pangool,MapReduce代码是java的,它简化了结构化数据的工作,依赖于元组和序列化的概念。对于您的特定情况,您可以使用avro对象的自定义序列化,这些对象基本上是json。它还简化了编写reduce side join和需要由不同Map器处理的多个输入。
所以一个pangoolMap器为link发出link\u id作为键,另一个pangoolMap器为item发出link\u id作为自身。但可能会很慢。
如果Map端连接是可能的(链接文件对于内存来说足够小),您可以将其放入主代码中的可序列化java对象中,并将其传递给Map器,这会使工作变得非常简单。