我正在尝试使用spark env中的scala来读取avro数据。我的数据没有得到分发,而在运行时它只能进入2个节点。我们有20个+节点。这是我的代码片段
@serializable case class My_Class(val My_ID:String)
val filePath =“hdfs:// path”;
val avroRDD = sc.hadoopFile[AvroWrapper[GenericRecord], NullWritable, AvroInputFormat[GenericRecord]](filePath)
val rddprsid = avroRDD.map(A => new My_Class(new String(A._1.datum.get("My_ID").toString())));
val uploadFilter = rddprsid.filter(E => E.My_ID ne null);
val as = uploadFilter.distinct(100).count;
我无法在rdd上使用并行化操作,因为它抱怨以下错误。 :30:错误:类型不匹配; 发现:org.apache.spark.rdd.RDD [(org.apache.avro.mapred.AvroWrapper [org.apache.avro.generic.GenericRecord],org.apache.hadoop.io.NullWritable)] 必需:Seq [?]
有人可以帮忙吗?
答案 0 :(得分:0)
您只看到2个节点,因为纱线提交默认为2.您需要使用--num-executors [NUMBER]
和--executor-cores [NUMBER]
至于parallelize ....你的数据已经并行化了...因此RDD
的包装器。 parallelize
仅用于在群集中获取内存数据。