hive、pig、map-reduce 用例之间的区别
Posted
技术标签:
【中文标题】hive、pig、map-reduce 用例之间的区别【英文标题】:Difference between hive,pig,map-reduce use cases 【发布时间】:2014-10-29 15:23:48 【问题描述】:map-reduce ,hive ,pig 的区别
pig:它是一种数据流语言,它可以处理任何基本上用于将半结构、非结构化数据转换为结构的数据,以便可以使用窗口函数等用于 Hive 高级分析。
Hive:处理结构数据并提供sql类型的查询语言。
我知道 pig 和 hive 在后端都使用 map -reduces 。
我知道 map-reduce 可以是程序员的好工具,对于 sql 家伙来说,hive 或 pig 是个好工具
我只是想知道我们是否有针对 hive、pig 和 map-reduce 的特定用例
基本上我们决定我们必须在这里使用pig here hive 或者我们必须使用map -reduce。
【问题讨论】:
重复***.com/questions/17950248/… 【参考方案1】:Map-Reduce:性能优于 pig 或 hive,但需要更多开发时间。
PIg:与 map-reduce 相比,开发时间较短,但性能较差。
Hve:SQL 类型语言具有一些良好的功能,例如分区和分桶以提高读取性能。此外,hive 强制读取模式。
【讨论】:
map-reduce 如何比 pig 或 hive 具有更好的性能,例如,您必须加入数据,因此编写 map reduce 是有效的,因为您没有太多选择。假设您有 2 个要加入的大表无法放入内存中,那么您将如何在 map -reduce 中进行联接 map-reduce 比 Pig 或 Hive 具有更好的性能并不完全正确。但是我们可以说 map-reduce 比 Pig 和 Hive 更底层。因此它提供了更大的灵活性,但编写它需要更多的代码和时间。【参考方案2】:Pig 用于格式化您的非结构化/半结构化数据格式。假设您的数据中有一个与 Hive 时间戳格式不同的时间戳。您可以使用 pigUDF 进行转换并格式化您的数据。这只是一个示例解释一下。你可以用 Pig 做更多的事情。
Hive 基本上用于结构化数据。这可能不适用于非结构化数据。这需要更多时间来执行,因为它转换为 Mapreduce 作业。我建议您使用比 hive 快得多的 impala。
【讨论】:
我已经在我的问题中提到了这些信息,基本上我正在寻找特定的用例【参考方案3】:Pig 是一种数据流语言。这意味着您不能使用 if 语句或循环。 如果需要大量重复,最好学习mapreduce。
您可以通过将 pig 嵌入 python 脚本来解决这个问题,但这需要更长的时间,因为它必须在循环的每次迭代中加载所有 jar 文件。
基本上,它归结为您花费多少时间进行原型设计与您有多少生产工作。 如果您是数据科学家或分析师,您的大部分工作都是需要大量原型设计的新项目。这意味着您关心快速获得结果。那么你会更喜欢 Pig 或 Hive。 如果您在一个开发团队中,您希望基于商定的不需要测试的方法构建健壮的代码,那么您更喜欢 mapreduce。
像 Cloudera 这样的公司提供了 Pig、Hive 和其他 Hadoop 工具包,因此您不必在两者之间进行选择。
【讨论】:
【参考方案4】:Map Reduce 是 hadoop 的内部组件,其他 Pig 和 hive 是 hadoop 生态系统,即运行在 hadoop 之上。 mapreduce、pig 和 hive 的目的都是以不同的方式处理大量数据。
Mapreduce:apache 实现了它。强烈推荐处理整个数据,它的时间消耗和所需的编程技能,如 java(强烈推荐)、pyghon、ruby 和其他编程语言。使用 mapper 和 reducer 函数对总数据进行聚合和排序。 Hadoop 默认使用它。
Hive:Facebook 实现了它。大多数分析师,尤其是bigdata analysts 使用这个工具来分析数据,尤其是结构数据。后端这个 hive 工具使用 mapreduce 来处理。 Hive 内部使用称为 HQL 的特殊语言,它是 SQL 语言的子集。谁精通 SQL,他们可以选择 Hive。强烈推荐给面向数据仓库的项目。处理非结构化数据非常困难,尤其是无模式数据。
猪: Pig 是一种脚本语言,由 Yahoo 实现。主要的difference between pig and Hive是pig可以处理任何类型的数据,无论是结构化数据还是非结构化数据。这意味着它强烈推荐用于流数据,如卫星生成的数据、实时事件、无模式数据等。Pig 首先加载数据,然后程序员编写程序依赖于数据以使其结构化。谁是编程语言专家,他们会选择这个 Hadoop 生态系统。
【讨论】:
以上是关于hive、pig、map-reduce 用例之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
apache-Pig map-reduce group by error