节省火花功能可在后台使用MapReduce

时间:2019-03-04 08:30:37

标签: apache-spark mapreduce rdd

我试图弄清楚为什么DO $$ BEGIN IF EXISTS (SELECT 1 FROM pg_database WHERE datname = 'xdb') THEN RAISE NOTICE 'Database already exists'; ELSE RAISE NOTICE 'Database does not exist'; PERFORM dblink_exec('dbname=' || current_database()||' user=puser' -- current db , 'CREATE DATABASE "ydb" with owner puser'); END IF; END $$; \connect 'xdb' ---->> This DB should be either xdb or ydb based on the above condition ## Other insert statements 和更多的 Spark 保存功能似乎在后台使用了 MapReduce 。这是源代码:

RDD.scala

saveAsText

PairRDDFunctions.scala

因此基本上可以将成对的RDD转换为PairRDD以便调用 def saveAsTextFile(path: String): Unit = withScope { val nullWritableClassTag = implicitly[ClassTag[NullWritable]] val textClassTag = implicitly[ClassTag[Text]] val r = this.mapPartitions { iter => val text = new Text() iter.map { x => text.set(x.toString) (NullWritable.get(), text) } } RDD.rddToPairRDDFunctions(r)(nullWritableClassTag, textClassTag, null) .saveAsHadoopFile[TextOutputFormat[NullWritable, Text]](path) } 函数:

saveAsHadoopFile

据我了解,它肯定是尝试配置MapReduce作业,设置outputKey,outputValue等。

有人可以向我解释:

  • Spark保存操作如何发生
  • Spark保存和MapReduce保存之间的主要区别是什么

1 个答案:

答案 0 :(得分:0)

  

它肯定试图配置MapReduce作业,设置outputKey,outputValue等。

不完全是。它正在设置Hadoop配置,但这并不意味着它正在设置MapReduce作业。 Hadoop本身包含多个不同的组件,而其中的许多组件都未与MapReduce紧密绑定。许多这样的项目(例如HDFS接口或安全组件)用于许多不同的项目。

  

Spark保存和MapReduce保存之间的主要区别是什么

这里没有。通常,当Spark与文件系统交互时,它会使用相关的Hadoop组件。但是,这些独立于MapReduce组件,不应与Hadoop MR作业混淆。