当前位置: 首页 > 面试题库 >

在RDD方法/闭包中使用SparkContext hadoop配置,例如foreachPartition

陆海阳
2023-03-14
问题内容

我正在使用Spark读取一堆文件,对其进行详细说明,然后将所有文件另存为Sequence文件。我想要的是每个分区有1个序列文件,所以我这样做了:

SparkConf sparkConf = new SparkConf().setAppName("writingHDFS")
                .setMaster("local[2]")
                .set("spark.streaming.stopGracefullyOnShutdown", "true");
        final JavaSparkContext jsc = new JavaSparkContext(sparkConf);
        jsc.hadoopConfiguration().addResource(hdfsConfPath + "hdfs-site.xml");
        jsc.hadoopConfiguration().addResource(hdfsConfPath + "core-site.xml");
        //JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, new Duration(5*1000));

        JavaPairRDD<String, PortableDataStream> imageByteRDD = jsc.binaryFiles(sourcePath);
        if(!imageByteRDD.isEmpty())
            imageByteRDD.foreachPartition(new VoidFunction<Iterator<Tuple2<String,PortableDataStream>>>() {

                @Override
                public void call(Iterator<Tuple2<String, PortableDataStream>> arg0){
                        throws Exception {
                  [°°°SOME STUFF°°°]
                  SequenceFile.Writer writer = SequenceFile.createWriter(
                                     jsc.hadoopConfiguration(), 
//here lies the problem: how to pass the hadoopConfiguration I have put inside the Spark Context? 
Previously, I created a Configuration for each partition, and it works, but I'm sure there is a much more "sparky way"

没有任何人知道如何使用Hadoop的配置对象 的RDD倒闭?


问题答案:

看起来无法完成,所以这是我使用的代码:

final hdfsNameNodePath = "hdfs://quickstart.cloudera:8080";

JavaPairRDD<String, PortableDataStream> imageByteRDD = jsc.binaryFiles(sourcePath);
        if(!imageByteRDD.isEmpty())
            imageByteRDD.foreachPartition(new VoidFunction<Iterator<Tuple2<String,PortableDataStream>>>() {

                @Override
                public void call(Iterator<Tuple2<String, PortableDataStream>> arg0)
                        throws Exception {

                    Configuration conf = new Configuration();
                    conf.set("fs.defaultFS", hdfsNameNodePath);
                    //the string above should be passed as argument
SequenceFile.Writer writer = SequenceFile.createWriter(
                                     conf, 
                                     SequenceFile.Writer.file([***ETCETERA...


 类似资料:
  • 问题内容: Python 3.4添加了使用静态方法定义函数重载的功能。本质上是文档中的示例: 在最纯粹的形式上,实现依赖于第一个参数来标识类型,因此很难将此功能扩展到实例方法。 有人对如何使用(或使用jerry-rig)此功能使其与实例方法一起使用有任何建议吗? 问题答案: 更新: 从Python 3.8开始,允许对方法,类方法,抽象方法和静态方法进行单次调度。 对于较旧的Python版本,请参见

  • 本文向大家介绍Django中redis的使用方法(包括安装、配置、启动),包括了Django中redis的使用方法(包括安装、配置、启动)的使用技巧和注意事项,需要的朋友参考一下 一、安装redis: 1.下载: 2.解压 3.复制,放到/usr/local目录下 4.进入到redis目录下 5.生成 6.测试,时间会比较长 7.安装,将redis的命令安装到usr/local/bin/目录中 8

  • Maven 配置及使用方法 Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。使得我们几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。 总的来说,Maven 简化了工程的构建过程,并对其标准化。它无缝衔接了编译、发布、文档生成、团队合作和其他任务。Maven 提高了重用性,负责了大部分

  • 本文向大家介绍js闭包用法实例详解,包括了js闭包用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js闭包用法。分享给大家供大家参考,具体如下: 引言 在公司中需要写一个js脚本来进行网站的统计,实现类似百度统计或者站长统计的功能,在实现的过程中自己感觉写的代码还是可以的,因为之前的js代码都是这些写,但是在组长代码走查的时候却非常的不满意,因为我们在js中写的方法都是全局的方

  • 本文向大家介绍Javascript闭包用法实例分析,包括了Javascript闭包用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Javascript闭包的概念及用法。分享给大家供大家参考。具体如下: 提到闭包,想必大家都早有耳闻,下面说下我的简单理解。 说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和组件或多或少用到了闭包。 所以,了解闭包是非常必要的

  • 本文向大家介绍Smarty模板简单配置与使用方法示例,包括了Smarty模板简单配置与使用方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Smarty模板简单配置与使用方法。分享给大家供大家参考,具体如下: 在Smarty目录中建立templates,templates_c,configs,cache目录。以便Smarty进行编译和缓存。 建立smarty_inc.php文件对sm