2015-03-13 72 views
-2

我的任务是弄清楚如何扩展spark的api,以包含iPython Notebook等其他程序的一些自定义钩子以锁定。我已经通过了quick start guide,the cluster mode overviewsubmitting applications docthis stack overflow question。一切我看到指示,如果要得到的东西在星火运行,你需要使用如何扩展apache spark api?

火花提交

做到这一点。因此,我掀起了一些代码,这些代码可以从我创建的accumulo表中抽出10行测试数据。然而,我的团队领导正告诉我修改火花本身。这是完成我描述的任务的首选方式吗?如果是这样,为什么?什么是价值主张?

+0

真的吗?通过倒票驱动?这位男士,这是胆怯的。是否真的很难阅读这个问题并发表一些深思熟虑的批评? – 2015-03-13 19:50:48

+0

请详细说明“自定义钩子”:你试图达到什么目的(不,我没有downvote:你的问题是一个合理的开始)。特别是 - SqlContext或RDD需要额外的功能吗?或者你可以结合现有的实现你的需求? – javadba 2015-03-13 21:11:30

+0

@javadba - thx的回复 - 如果你投降了,这将会非常酷!我最近非常沮丧,因为SO的政策是允许匿名驾驶 - 通过投票。我们正在努力在spark和accumulo之间建立一个链接,以使像Notebook这样的东西可以坐在火花之上并访问accumulo数据,使用spark来执行地图缩减操作等,以及完全需要什么 - 在这一点上,我没有'吨从我的领导收到细节。但是,他确实指出了几何尺寸,并告诉我阅读他们的代码,我现在正在做这些代码。 – 2015-03-13 21:21:06

回答

1

没有提供有关您的应用程序需要什么类型的操作的详细信息,因此这里的答案将需要保持一般性质。

延长火花本身可以归结为一个问题:

我可以通过利用星火内现有 方法(/ SQL /蜂巢/流)上下文和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>) 
+0

让我们假设为了争论,我的领导想到的是Spark的股票版本中没有提供的内容。根据您的估计,什么是使用spark-submit扩展spark和vs的好处?此外,这里是我正在巡航的geomesa代码的链接,因为它显然延伸了火花以使其神奇发生 – 2015-03-13 21:29:42

+0

首选的方法显然是编写存储在Spark RDD库存转换步骤中的代码(并因此通过火花-提交)。这不是关于性能,而是关于努力和可维护性。 – javadba 2015-03-13 21:34:11

+0

展开:您不会通过第一次选择更改Web服务器的源代码。而是将代码添加到servlet以执行您所需的操作。 – javadba 2015-03-13 21:35:31