Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Apache spark Spark:将资源文件路径发送到Spark执行器_Apache Spark_Apache Spark Sql_Spark Streaming - Fatal编程技术网

Apache spark Spark:将资源文件路径发送到Spark执行器

Apache spark Spark:将资源文件路径发送到Spark执行器,apache-spark,apache-spark-sql,spark-streaming,Apache Spark,Apache Spark Sql,Spark Streaming,我需要将资源文件路径的位置从驱动程序传递给执行器。 为了实现这一点,我试图设置executor enviornmnet变量。 代码如下所示: class AppMain{ def main(args : Array[String]){ val resourcePath = "/a/" sparkConf.setExecutorEnv("RESOURCEPATH", resourcePath) } class B{ println(System.getenv("RESOURCE

我需要将资源文件路径的位置从驱动程序传递给执行器。 为了实现这一点,我试图设置executor enviornmnet变量。 代码如下所示:

class AppMain{
 def main(args : Array[String]){
    val resourcePath = "/a/"
    sparkConf.setExecutorEnv("RESOURCEPATH", resourcePath)
}
class B{
 println(System.getenv("RESOURCEPATH")) // This returns null
}
}

关于如何解决这个问题或我在这里遗漏了什么,您有什么建议吗?

在spark中,您可以直接使用所调用操作的闭包中的任何变量

String my_path="path";
rdd.map(new Function<Tuple2<ImmutableBytesWritable,Result>, String>() {
      @Override
      public String call(Tuple2<ImmutableBytesWritable, Result> immutableBytesWritableResultTuple2) throws Exception {
            return my_path;
       }
   });
String my_path=“path”;
map(新函数(){
@凌驾
公共字符串调用(Tuple2 immutableBytesWritableResultTuple2)引发异常{
返回我的路径;
}
});

建议:如果您在本地进行测试,请检查是否创建了执行器进程,或者执行器是否在与驱动程序相同的JVM中运行。因为环境变量仅在executor启动时设置。

在spark中,您可以直接使用所调用操作的闭包中的任何变量

String my_path="path";
rdd.map(new Function<Tuple2<ImmutableBytesWritable,Result>, String>() {
      @Override
      public String call(Tuple2<ImmutableBytesWritable, Result> immutableBytesWritableResultTuple2) throws Exception {
            return my_path;
       }
   });
String my_path=“path”;
map(新函数(){
@凌驾
公共字符串调用(Tuple2 immutableBytesWritableResultTuple2)引发异常{
返回我的路径;
}
});

建议:如果您在本地进行测试,请检查是否创建了执行器进程,或者执行器是否在与驱动程序相同的JVM中运行。因为环境变量仅在executor启动时设置。

谢谢。。但是我的应用程序有很多类和对象。在实例化对象时,我需要环境变量。我不知道如何通过这种方法实现这一目标。我正在集群中测试,我可以在executor logsThanks中看到env值为null。。但是我的应用程序有很多类和对象。在实例化对象时,我需要环境变量。我不知道如何通过这种方法实现这一目标。我正在集群中测试,我可以在执行器日志中看到env值为null