0
私はsqlContext
を一度に作成し、それを2回おきにアクセスしています。spark 2.1の共有SqlContextへのアクセス
私はこの構文を使用してsqlcontext
を作成しました:
class A {
static SparkConf conf = new SparkConf().setMaster("local").setAppName("SparkApp");
static JavaSparkContext sc = new JavaSparkContext(conf);
static SQLContext sqlContext = new SQLContext(sc);
public static void main(String[] args) throws InterruptedException {
Thread.sleep(86400000);
}
}
public class B {
public static void main(String[] args) {
System.out.println(A.sqlContext);
}
}
私が作成した後、別のファイルBからこのsqlContext
にアクセスすることができます。このようなsparkSession
を使用して
しかし、私が作成したsqlContext
は:
class A {
public static SparkConf conf = null;
public static JavaSparkContext context = null;
public static SparkListener listener = null;
public static SQLContext sqlContext = null;
public static SparkSession sparkSession = null;
public static void main(String[] args) throws InterruptedException {
conf = new SparkConf();
sparkSession = SparkSession.builder().appName("TestCsv").master("local").config(conf)
// .enableHiveSupport()
.getOrCreate();
context = new JavaSparkContext(sparkSession.sparkContext());
sqlContext = sparkSession.sqlContext();
Thread.sleep(86400000);
}
}
public class B {
public static void main(String[] args) {
System.out.println(A.sqlContext);
}
}
私はsqlContext
を作成することができています。 今私は別のファイルBからこのsqlContext
にアクセスしようとすると、null
が届きます。
何私は静的関数を通してそれを初期化する場合は?すべての呼び出しで初期化する必要はありません。初期化のためには一度だけの作業が必要です。私が言っているのは、初期化後に私はアクセスを得ることができるということです。 – Bond