我的任务是找出如何扩展spark的api以包含一些自定义钩子,以便锁定其他程序,如iPython Notebook。我已经浏览过quick start guide,the cluster mode overview,submitting applications doc和this stack overflow question。我所看到的一切都表明,为了在Spark中运行某些东西,你需要使用
火花提交
实现它。因此,我掀起了一些代码,签证与火花,从我创建的累积表中拉出前十行测试数据。然而,我的团队领导告诉我修改火花本身。这是完成我描述的任务的首选方式吗?如果是这样,为什么?什么是价值主张?
答案 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>)