【问题标题】:Comparing Hive to Pig for usability on structured data比较 Hive 和 Pig 在结构化数据上的可用性
【发布时间】:2013-09-11 11:14:00
【问题描述】:

我们最近才开始研究 Pig,但在弄清楚它在结构化数据上的语法时遇到了挑战。鉴于下面的示例数据模型,Hive 或 Pig 或“其他”哪个更适合该问题?

数据模型:

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>

常用操作:

  • 将各种格式的数据导入此格式
  • 查询(排序、聚合、采样、汇总)数据(最好由并非都是语言专家的团队)
  • 使用各种过滤器以各种格式加入和导出

这是对大型数据集(150-500 GB 原始文本数据)的基本数据操作。

问题/疑问:

  • Pig 给我们带来了加入该链接的挑战(pig 中的收藏品是袋装袋,变得非常抽象)。
  • Hive 是否擅长/更好地管理这些集合?
  • 我们预计会有很多“数据转换”活动,但由于我们可以轻松地将数据调整为类似 SQL 的格式,这是否使 Hive 成为更易于使用的解决方案?

【问题讨论】:

    标签: hadoop hive apache-pig


    【解决方案1】:

    你可以试试Pangool,Map Reduce 代码是用 Java 编写的,它简化了结构化数据的工作,依赖于元组和序列化的概念。对于您的特定情况,您可以将 Custom Serialization 与基本上是 JSON 的 Avro 对象一起使用。 它还简化了编写reduce side joins和需要由不同映射器处理的多个输入。

    因此,Link 的一个 Pangool 映射器发出 link_id 作为键,另一个 Pangool 映射器的 Item 发出 link_id 自身。但它可能会很慢。

    如果 map 侧连接是可能的(链接文件足够小以存储内存),您可以将其放入主代码中的 Serializable Java 对象并将其传递给映射器,这让生活变得非常容易。

    【讨论】:

    • 很有趣,我不知道这个,谢谢你的建议!
    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多