【发布时间】:2015-05-06 17:00:05
【问题描述】:
我有一个简单的 spark 应用程序,我试图在 YARN 集群上广播一个字符串类型的变量。 但是每次我尝试访问广播变量 value 时,我都会在任务中得到空值。如果你们能提出建议,这将非常有帮助,我在这里做错了什么。 我的代码如下:-
public class TestApp implements Serializable {
static Broadcast<String[]> mongoConnectionString;
public static void main( String[] args ) {
String mongoBaseURL = args[0];
SparkConf sparkConf = new SparkConf().setAppName(Constants.appName);
JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);
mongoConnectionString = javaSparkContext.broadcast(args);
JavaSQLContext javaSQLContext = new JavaSQLContext(javaSparkContext);
JavaSchemaRDD javaSchemaRDD = javaSQLContext.jsonFile(hdfsBaseURL+Constants.hdfsInputDirectoryPath);
if(javaSchemaRDD!=null) {
javaSchemaRDD.registerTempTable("LogAction");
javaSchemaRDD.cache();
pageSchemaRDD = javaSQLContext.sql(SqlConstants.getLogActionPage);
pageSchemaRDD.foreach(new Test());
}
}
private static class Test implements VoidFunction<Row> {
private static final long serialVersionUID = 1L;
public void call(Row t) throws Exception {
logger.info("mongoConnectionString "+mongoConnectionString.value());
}
}
}
【问题讨论】:
-
我想我也有类似的问题。它在本地模式下工作,是吗?
-
是的,它在本地模式下工作。我从以下帖子中得到了解决方案。希望对您有所帮助。community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/…
标签: java hadoop apache-spark cloud hadoop-yarn