[英]how to put HashMap in BroadCast variable?
我正在嘗試將HashMap
放入BroadCast
變量中,但低於錯誤
The method broadcast(T, ClassTag<T>) in the type SparkContext is not applicable for the arguments (Map<String,String>, ClassTag<HashMap>)
在下面的代碼片段上
Broadcast<HashMap<String, String>> br = ss.sparkContext().broadcast(mp, classTag(HashMap.class));
完整代碼
private static <T> ClassTag<T> classTag(Class<T> clazz) {
return scala.reflect.ClassManifestFactory.fromClass(clazz);
}
Dataset<Row> schema = ss.read().format("csv").option("delimeter", ",").option("header", "true")
.option("quote", "").load("D:\\Data\\schema.csv");
Map<String, String> mp = new HashMap<String, String>();
schema.foreach((ForeachFunction<Row>) row -> {
String[] names = row.schema().fieldNames();
for (int i = 0; i< names.length; i++) {
mp.put(names[i], row.getAs(names[i]));
}
});
Broadcast<HashMap<String, String>> br = ss.sparkContext().broadcast(mp, classTag(HashMap.class));
我真的堅持這一點。 誰能建議做錯了什么?
您正在使用 SparkContext 的 Scala 版本,您可以獲得 Java 版本,如下所示:
JavaSparkContext.fromSparkContext(sc).broadcast(new HashMap<String, String>());
無需 class 標簽!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.