【问题标题】:how to extend apache spark api?如何扩展 apache spark api?
【发布时间】:2015-03-14 06:03:44
【问题描述】:

我的任务是弄清楚如何扩展 spark 的 api 以包含一些自定义钩子,以供 iPython Notebook 等另一个程序使用。我已经浏览过quick start guidethe cluster mode overviewsubmitting applications docthis stack overflow question。我所看到的一切都表明,要在 Spark 中运行某些东西,您需要使用

火花提交

实现它。因此,我编写了一些代码,visas vis spark,将前十行测试数据从我创建的累积表中提取出来。然而,我的团队负责人告诉我修改 spark 本身。这是完成我描述的任务的首选方式吗?如果是这样,为什么?价值主张是什么?

【问题讨论】:

  • 真的吗?否决票?伙计,这真是胆小鬼。阅读问题并发表深思熟虑的批评真的有那么难吗?
  • 请详细说明“自定义挂钩”:您要达到什么目的(不,我没有投反对票:您的问题是一个合理的开始)。具体来说 - SqlContext 或 RDD 是否需要其他功能?或者你可以结合现有的来满足你的需求吗?
  • @javadba - 感谢您的回复 - 如果您投了反对票,那就太好了!我最近对 ​​SO 允许匿名路过投票的政策感到非常沮丧。我们正在努力在 spark 和 accumulo 之间创建一个链接,以便像 Notebook 这样的东西可以坐在 spark 上并访问 accumulo 数据,使用 spark 来执行 map reduce 操作等等。至于究竟需要什么——在这一点上我没有' t 从我的领导那里收到了详细信息。然而,他确实将我指向 geomesa 并告诉我阅读他们的代码,我现在正在这样做。
  • 我继续在下面创建了一个一般性答案 - 但不确定它在多大程度上可能会有所帮助。我也不喜欢通过投票来推动(并且在考虑了一下之后对您的问题进行了投票)

标签: apache-spark


【解决方案1】:

没有提供有关您的应用程序需要哪些类型的操作的详细信息,因此此处的答案需要保持一般性。

扩展火花本身的问题可能归结为:

我能否通过利用现有的 Spark(/SQL/Hive/Streaming)Context 和 RDD 中的方法 (/SchemaRDD/DStream/..)

其他选择:

是否可以将所需的功能嵌入到 RDD 的转换方法——通过自定义代码或调用 第三方库。

这里可能的区别因素是现有的数据访问和随机/分发结构是否支持您的需求。当涉及到数据转换时——在大多数情况下,您应该能够将所需的逻辑嵌入到 RDD 的方法中。

所以:

case class InputRecord(..)
case class OutputRecord(..)
def myTranformationLogic(inputRec: InputRecord) : OutputRecord = {
  // put your biz rules/transforms here
  (return) outputRec
}
val myData = sc.textFile(<hdfs path>).map{ l => InputRecord.fromInputLine(l)}
val outputData = myData.map(myTransformationLogic)
outputData.saveAsTextFile(<hdfs path>)

【讨论】:

  • 为了论证的目的,我们假设我的主管想到的一些东西在 Spark 的库存版本中没有提供。在您看来,扩展 spark 与使用 spark-submit 相比有什么好处?此外,这里是我正在浏览的 geomesa 代码的链接,因为它显然扩展了 spark 以实现其魔力
  • 首选方法显然是编写存在于库存 Spark RDD 的转换步骤中的代码(因此通过 spark-submit)。这不是关于性能,而是关于工作量和可维护性。
  • 扩展:您不会通过首选更改 Web 服务器的源代码 .. 而是将代码添加到 servlet 以执行您需要的操作。
  • 这是一个很好的问题!不幸的是,我现在没有答案。我还不熟悉整个技术堆栈,因此对某些架构决策背后的推理并不完全清楚。据我了解,创建一个可以作为无限期运行的进程提交给 spark 的 scala 模块不会产生任何重大的性能问题 - 对吗?
猜你喜欢
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
相关资源
最近更新 更多