Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用纱线簇运行时如何在执行器内部获取SparkContext_Java_Apache Spark_Mapreduce_Yarn_Rdd - Fatal编程技术网

Java 使用纱线簇运行时如何在执行器内部获取SparkContext

Java 使用纱线簇运行时如何在执行器内部获取SparkContext,java,apache-spark,mapreduce,yarn,rdd,Java,Apache Spark,Mapreduce,Yarn,Rdd,我有一个驱动程序,我在其中创建JavaSparkContext,然后使用NewApiHadoop文件处理自定义InputFormat 如果我需要在CutomInput Format类中获取JavaSparKContext,我如何实现它 我的驱动程序: > JavaSparkContext sc= //create the JavaSparkContext here > > JavaPairRDD<NullWritable, ArrayList<Record>

我有一个驱动程序,我在其中创建JavaSparkContext,然后使用NewApiHadoop文件处理自定义InputFormat

如果我需要在CutomInput Format类中获取JavaSparKContext,我如何实现它

我的驱动程序:

> JavaSparkContext sc=  //create the JavaSparkContext here
> 
> JavaPairRDD<NullWritable, ArrayList<Record>> baseRDD = sc.newAPIHadoopFile(args[2], InputFormat.class, NullWritable.class, ArrayList.class, conf);
>JavaSparkContext sc=//在此处创建JavaSparkContext
> 
>javapairdd baseRDD=sc.newAPIHadoopFile(args[2],InputFormat.class,nullwriteable.class,ArrayList.class,conf);
自定义输入格式类:

> public class InputFormat extends  FileInputFormat {
> 
>   @Override   public RecordReader<NullWritable, ArrayList<Record>> 
>   createRecordReader(InputSplit split,TaskAttemptContext context) throws IOException,InterruptedException { 
        > final JavaSparkContext sc=    //How to get the spark Context here
>公共类InputFormat扩展了FileInputFormat{
> 
>@覆盖公共记录读取器
>createRecordReader(InputSplit split,TaskAttemptContext上下文)引发IOException,InterruptedException{
>final JavaSparkContext sc=//如何在此处获取spark上下文

只是想知道…为什么需要Hadoop输入格式的SparkContext?SparkContext是定义RDD并在执行器之间分发RDD的东西。它是Spark Master特定的实体。这就是为什么不能从RDD.map()中创建RDD的原因操作。所以,如果我理解你想做什么,答案似乎是:你就是做不到。好吧。这似乎是合理的。在这种情况下,我可以在InputFormat类中获取广播变量。我之前的qs对此进行了研究,如下所示。为什么你不能使用mapreduce/spark实现你的全部逻辑。我不这么认为nk您可以在输入格式中充分利用spark上下文。为什么我尝试获取SparkContext是为了在我的InputFormat类中获取BroadcastVariable。如果我使用API-newAPIHadoopFile,是否有任何方法可以在InputFormat中获取广播变量。只是想知道…为什么您需要Hadoop输入格式的SparkContext?SparkContext是在执行者之间定义和分发RDD的内容。它是Spark Master特定的实体。这就是为什么不能从RDD.map()中创建RDD的原因操作。所以,如果我理解你想做什么,答案似乎是:你就是做不到。好吧。这似乎是合理的。在这种情况下,我可以在InputFormat类中获取广播变量。我之前的qs对此进行了研究,如下所示。为什么你不能使用mapreduce/spark实现你的全部逻辑。我不这么认为nk您可以在输入格式中充分利用spark上下文。我之所以尝试获取SparkContext是为了在我的InputFormat类中获取BroadcastVariable。如果我使用API-NewApiHadoop文件,是否有任何方法可以在InputFormat中获取广播变量。