适用于 TB 级结构化数据的 Greenplum、Pivo​​tal HD + Spark 还是 HAWQ?

2024-01-24

我在 Greenplum DB 中有 TB 的结构化数据。我需要对我的数据运行本质上是 MapReduce 作业。

我发现自己至少重新实现了 MapReduce 的功能,以便这些数据适合内存(以流式传输方式)。

然后我决定到别处寻找更完整的解决方案。

我查看了 Pivotal HD + Spark,因为我使用的是 Scala,而且 Spark 基准测试令人惊叹。但我相信其背后的数据存储 HDFS 的效率将低于 Greenplum。 (注意“我相信”。我很高兴知道我错了,但请提供一些证据。)

因此,为了与 Greenplum 存储层保持一致,我查看了 Pivotal 的 HAWQ,它基本上是 Greenplum 上的 Hadoop 和 SQL。

这种方法丢失了很多功能。主要是Spark的使用。

或者直接使用内置的 Greenplum 功能更好?

所以我现在正处于十字路口,不知道哪条路最好。我想要处理非常适合关系数据库模型的 TB 级数据,并且我想要 Spark 和 MapReduce 的优势。

我的要求是不是太多了?


在发布我的答案之前,我想根据我的理解重新表述问题(以确保我正确理解问题)如下:

你有 TB 级的数据,非常适合关系型 DB 模型,并且大多数时候你想使用 SQL 查询数据(我认为这就是你将其放入 Greenplum DB 的原因),但有时你想使用 Spark 和 MapReduce 来访问数据,因为它们的灵活性。

如果我的理解是正确的,我强烈建议您尝试一下HAWQ。 HAWQ的一些功能使其完美满足您的要求(Note:我可能有偏见,因为我是 HAWQ 的开发人员)。

首先,HAWQ 是一个 SQL on Hadoop 数据库,这意味着它使用 HDFS 作为数据存储。 HAWQ 与 Greenplum DB 存储层不一致。

其次,很难反驳“HDFS 的效率将低于 Greenplum”。但性能差异并不像您想象的那么显着。我们对HDFS数据的访问做了一些优化。举个例子,如果我们发现一个数据块存储在本地,我们会直接从磁盘读取它,而不是通过普通的 RPC 调用。

第三,HAWQ 有一个名为 HAWQ InputFormat for MapReduce 的功能(Greenplum DB 没有)。借助该功能,您可以编写 Spark 和 MapReduce 代码来轻松高效地访问 HAWQ 数据。与 Hadoop 提供的 DBInputFormat 不同(这会使 master 成为性能瓶颈,因为所有数据首先经过 master),HAWQ InputFormat for MapReduce 允许您的 Spark 和 MapReduce 代码直接访问存储在 HDFS 中的 HAWQ 数据。它是完全分布式的,因此非常高效。

最后,当然,您仍然可以使用 SQL 通过 HAWQ 查询数据,就像使用 Greenplum DB 一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于 TB 级结构化数据的 Greenplum、Pivo​​tal HD + Spark 还是 HAWQ? 的相关文章

  • Spark-获取RDD中的文件名

    我正在尝试处理每天都在增长的 4 个文本文件目录 我需要做的是 如果有人试图搜索发票号码 我应该给他们包含该发票号码的文件列表 我能够通过将文本文件加载为 RDD 来映射和减少文本文件中的值 但是如何获取文件名和其他文件属性呢 从 Spar
  • AssertionError:断言失败:没有在 Databricks 中进行 DeleteFromTable 的计划

    这个命令运行良好有什么原因吗 sql SELECT FROM Azure Reservations WHERE timestamp gt 2021 04 02 返回 2 行 如下 sql DELETE FROM Azure Reservat
  • Spark/Yarn:HDFS 上不存在文件

    我在 AWS 上设置了 Hadoop Yarn 集群 有 1 个主服务器和 3 个从服务器 我已经验证我有 3 个活动节点在端口 50070 和 8088 上运行 我在客户端部署模式下测试了 Spark 作业 一切正常 当我尝试使用 Spa
  • 对于空列表,max() 应该返回什么?

    Got java util NoSuchElementException head of empty list所以我试着检查一下 但现在我明白了 info max of a few numbers FAILED info 0 did not
  • 如何使用 apply/unapply 方法重现案例类行为?

    我尝试用普通类和伴生对象替换案例类 但突然出现类型错误 编译良好的代码 综合示例 trait Elem A B def C other Elem C A Elem C B other match case Chain head tail g
  • Scala 集合不一致

    为什么 Scala Collections API 中的集合和列表之间缺乏一致性 例如 有不可变的 Set 但也有可变的 Set 如果我想使用后者 我可以简单地这样做 val set Set A set new A 但是 本身不存在可变列表
  • 逆变方法参数类型

    wiki 逆变方法参数类型 https en wikipedia org wiki Covariance and contravariance 28computer science 29 Contravariant method argum
  • Scala 中值类的隐式 Json 格式化程序

    我有许多值类组成了一个更大的对象案例类 final case class TopLevel foo Foo bar Bar final case class Foo foo String extends AnyVal final case
  • Scala 相当于 Java 的 Number

    我正在尝试为数值域类型构建类型层次结构 例如AYear is an Int 这是一个Number a Percentage is a Double 这是一个Number等等 我需要层次结构以便我可以调用toInt or toDouble关于
  • Scala Array.apply 有何魔力

    来自 scala 2 10 4 的 array scala Array定义为 final class Array T length Int extends java io Serializable with java lang Clonea
  • 使用 Akka 玩 2.5 - 找不到参数超时的隐式值:akka.util.Timeout

    我正在尝试使用 Play 2 5 测试 Akka 但遇到了一个似乎无法解决的编译错误 我正在关注 Play 文档中的此页面 https playframework com documentation 2 5 x ScalaAkka http
  • 阶乘的 Scala 排列

    我怎样才能找到n Scala 中某些字母的排列 Scala 2 9 RC1 scala gt abc permutations toList res58 List String List abc acb bac bca cab cba
  • AWS EMR 引导操作为 sudo

    我需要更新 etc hosts适用于我的 EMR 集群 EMR AMI 4 3 中的所有实例 整个脚本无非就是 bin bash echo e ip1 uri1 gt gt etc hosts echo e ip2 uri2 gt gt e
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 为什么 Spark 比 Hadoop MapReduce 更快

    有人可以使用字数统计示例解释一下为什么 Spark 比 MapReduce 更快吗 bafna的答案提供了故事的记忆方面 但我想补充另外两个重要事实 DAG和生态系统 Spark 使用 惰性求值 来形成连续计算阶段的有向无环图 DAG 通过
  • pyspark 中的 Pandas UDF

    我正在尝试在 Spark 数据帧上填充一系列观察结果 基本上我有一个日期列表 我应该为每个组创建缺失的日期 在熊猫中有reindex函数 这是 pyspark 中不可用的 我尝试实现 pandas UDF pandas udf schema
  • Scala Tuple2Zipped 与 IterableLike zip

    两种实现有什么区别 这个比那个好吗 有一篇博客文章说 Tuple2Zipped 性能更好 但没有提供原因 并且查看源代码我没有看到差异 val l1 List 1 2 3 val l2 List 5 6 7 val v1 l1 zip l2
  • Spark Scala 将列从一个数据帧复制到另一个数据帧

    我有一个原始数据框的修改版本 我在其上进行了聚类 现在我想将预测列恢复为原始 DF 索引没问题 因此匹配 我该怎么做 使用这段代码我得到一个错误 println Predicted dfWithOutput show println Ori
  • 使用spark phoenix从表中读取rdd分区号为1

    当我运行我的火花代码时 val sqlContext spark sqlContext val noact table primaryDataProcessor getTableData sqlContext zookeeper table
  • Scala 中的 Shapeless 结构编程:如何正确使用 SYB 实现?

    我想使用SYB http research microsoft com en us um people simonpj papers hmap 实施于无形图书馆 https github com milessabin shapeless编写

随机推荐