spark中的数据并行性:从hdfs读取avro数据

时间:2015-10-19 21:16:22

标签: scala apache-spark

我正在尝试使用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 [?]

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您只看到2个节点,因为纱线提交默认为2.您需要使用--num-executors [NUMBER]--executor-cores [NUMBER]

提交

至于parallelize ....你的数据已经并行化了...因此RDD的包装器。 parallelize仅用于在群集中获取内存数据。