我有一个这样的课:
public class Test {
private static String name;
public static String getName() {
return name;
}
public static void setName(String name) {
Test.name = name;
}
public static void print() {
System.out.println(name);
}
}
在我的Spark驱动程序中,我像这样设置名称并调用print()
命令:
public final class TestDriver{
public static void main(String[] args) throws Exception {
SparkConf sparkConf = new SparkConf().setAppName("TestApp");
// ...
// ...
Test.setName("TestName")
Test.print();
// ...
}
}
但是,我得到一个NullPointerException
。如何将值传递给全局变量并使用它?
好的,基本上有两种方法可以将执行者已知的值带给执行者:
两种情况下都无需使用静态变量。但是,如果您确实想在执行程序VM上使用静态值,则需要执行以下操作之一:
希望这可以帮助!
PS:关于您的例外:我只是在该代码示例中看不到它,所以我敢保证它发生在其他地方。
编辑以进一步澄清:惰性val解决方案只是Scala,不涉及Spark …
object MyStaticObject
{
lazy val MyStaticValue = {
// Call a database, read a file included in the Jar, do expensive initialization computation, etc
4
}
}
由于每个执行器都对应一个JVM,因此一旦加载了类,MyStaticObject
便会初始化。该lazy
关键字保证了MyStaticValue
变量将只在首次初始化它实际上是要求,并从此保持其价值。
假设我有三个类:,,和 我从类a传递一个变量,该变量将传递的变量设置为类数据中的变量,使用数据的类,并尝试使用数据的类获取数据()在类
我正在编写一个程序,需要从mingw为当前进程设置环境变量(在使用-call时可用于子进程)。 我知道如何在linux和windows中使用msvc和clang。然而,我找不到任何关于如何使用MingW-G++实现这一点的好的例子。 如何实现具有这种行为的函数? 如果您想用c语言回答,请省略std::string:) 编辑: 当使用(linux方式)时,我得到: 当使用_putenv_s(我在wi
库加载良好,但似乎找不到静态变量。为什么没有加载静态变量?
我想在我的Python项目中添加一些全局环境变量。我的想法是添加一个<代码>。env,并设置一些变量,如下所示: 在Python中,我如何能够在我的项目中访问这些变量。在网上,我看到,其中也被导入,但这似乎不起作用。有人知道我如何做到这一点吗?我还可以设置一个文件来包含这些全局变量。或者,如果有更好的Python实践,有人能分享一下吗?
问题内容: 将DataFrame设置为redis之后,再将其取回,redis返回一个字符串,但我想不出一种将该str转换为DataFrame的方法。 我该如何适当地做这两个? 问题答案: 组: 得到:
运行时出现此代码错误,获取错误-:非静态变量,无法从静态上下文中引用此变量我应该如何解决此代码