如何扩展apache spark api?

时间:2015-03-13 19:41:00

标签: apache-spark

我的任务是找出如何扩展spark的api以包含一些自定义钩子,以便锁定其他程序,如iPython Notebook。我已经浏览过quick start guidethe cluster mode overviewsubmitting applications docthis stack overflow question。我所看到的一切都表明,为了在Spark中运行某些东西,你需要使用

  

火花提交

实现它。因此,我掀起了一些代码,签证与火花,从我创建的累积表中拉出前十行测试数据。然而,我的团队领导告诉我修改火花本身。这是完成我描述的任务的首选方式吗?如果是这样,为什么?什么是价值主张?

1 个答案:

答案 0 :(得分: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>)