我使用的是spark-sql-2.4.1版本。
创建一个广播变量,如下所示
Broadcast<Map<String,Dataset>> bcVariable = javaSparkContext.broadcast(//read dataset);
我将 bcVariable 传递给函数
Service.calculateFunction(sparkSession, bcVariable.getValue());
public static class Service {
public static calculateFunction(
SparkSession sparkSession,
Map<String, Dataset> dataSet ) {
System.out.println("---> size : " + dataSet.size()); //printing size 1
for( Entry<String, Dataset> aEntry : dataSet.entrySet() ) {
System.out.println( aEntry.getKey()); // printing key
aEntry.getValue().show() // throw null pointer exception
}
}
这里出了什么问题?如何在函数中传递数据集/数据帧?
Try 2 :
Broadcast<Dataset> bcVariable = javaSparkContext.broadcast(//read dataset);
我将 bcVariable 传递给函数
Service.calculateFunction(sparkSession, bcVariable.getValue());
公共静态类服务{
公共静态计算函数(
SparkSession SparkSession,
数据集 数据集 ) {
System.out.println("---> size : " + dataSet.size()); // throwing null pointer exception.
}
这里出了什么问题?如何在函数中传递数据集/数据帧?
Try 3 :
Dataset metaData = //read dataset from oracle table i.e. meta-data.
我将元数据传递给函数
Service.calculateFunction(sparkSession, 元数据 );
public static class Service {
public static calculateFunction(
SparkSession sparkSession,
Dataset metaData ) {
System.out.println("---> size : " + metaData.size()); // throwing null pointer exception.
}
这里出了什么问题?如何在函数中传递数据集/数据帧?