当我开始使用大数据技术时,我了解到基本规则是“移动代码,而不是数据”。但我意识到我不知道它是如何工作的:火花如何知道在哪里移动代码?
我在这里讲的是第一步,例如:阅读一个分布式文件和几个地图操作。
编辑
对于卡桑德拉+火花,(专用的)连接器似乎管理着这个数据局部性:https://stackoverflow.com/a/31300118/1206998
发布于 2016-05-17 12:10:00
1) Spark询问Hadoop如何将输入文件分发到拆分中(这是对拆分的另一个很好的解释),并将拆分转换为分区。检查星火的NewHadoopRDD代码
override def getPartitions: Array[Partition] = {
val inputFormat = inputFormatClass.newInstance
inputFormat match {
case configurable: Configurable =>
configurable.setConf(_conf)
case _ =>
}
val jobContext = newJobContext(_conf, jobId)
val rawSplits = inputFormat.getSplits(jobContext).toArray
val result = new Array[Partition](rawSplits.size)
for (i <- 0 until rawSplits.size) {
result(i) = new NewHadoopPartition(id, i, rawSplits(i).asInstanceOf[InputSplit with Writable])
}
result
}2)事实并非如此。它依赖于文件的Hadoop InputFormat。
3)相同。
4)机制类似,例如,KafkaRDD实现将Kafka分区映射为一对一的火花分区。
( 5)我相信他们使用的机制是相同的。
https://stackoverflow.com/questions/37269435
复制相似问题