Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala spark中的数据并行性:从hdfs读取avro数据_Scala_Apache Spark - Fatal编程技术网

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

Scala spark中的数据并行性:从hdfs读取avro数据,scala,apache-spark,Scala,Apache Spark,我试图在spark环境中使用scala读取avro数据。我的数据没有被分发,在运行时,它将只发送到2个节点。我们有20多个节点。这是我的代码片段 @可序列化案例类My_class val My_ID:String val文件路径=hdfs://path; val avroRDD=sc.hadoopFile[AvroWrapper[GenericRecord],可空写,AvroInputFormat[GenericRecord]]文件路径 val rddprsid=avroRDD.mapA=> 新

我试图在spark环境中使用scala读取avro数据。我的数据没有被分发,在运行时,它将只发送到2个节点。我们有20多个节点。这是我的代码片段

@可序列化案例类My_class val My_ID:String val文件路径=hdfs://path; val avroRDD=sc.hadoopFile[AvroWrapper[GenericRecord],可空写,AvroInputFormat[GenericRecord]]文件路径 val rddprsid=avroRDD.mapA=> 新建My\u Classnew StringA.\u 1.datum.getMy\u ID.toString ; val uploadFilter=rddprsid.filterE=>E.My_ID ne null; val as=uploadFilter.distinct100.count; 我不能在rdd上使用并行化操作,因为它会抱怨以下错误

<console>:30: error: type mismatch;
 found   : org.apache.spark.rdd.RDD[(org.apache.avro.mapred.AvroWrapper[org.apache.avro.generic.GenericRecord], org.apache.hadoop.io.NullWritable)]
 required: Seq[?]

有人能帮忙吗?

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


至于并行化…您的数据已经并行化了…因此RDD的包装器。parallelize仅用于跨集群获取内存数据。

这是两个不同的问题,第一个问题没有足够的信息。你的spark提交的是什么?我正在使用scala控制台提交作业,它在Thread客户端上。通过scala控制台,你是指spark shell吗?是的,spark shell-master Thread-client.Hi@Justin Pihony,我正在尝试获取应用程序的唯一用户数,如果它是单部分文件,我的程序会给出正确的结果。当我为10个文件运行它时,我相信它可以计算每个部分文件的UU并求和它们。你能帮忙吗?val appMap=avroRDD.mapA=>new App_useridA._1.datum.getApp.toString,A.。_1.datum.getuser.asInstanceOf[Long],1;val dist=appMap.reduceByKey+,500 val newmap=dist.mapa=>a._1.App,1;val newval=newmap.reduceByKey+;val finalResult=newval.collect;这应该是一个单独的问题。我最初的回答是关于你最初的问题。因为您有新问题而删除已接受的支票并非如此。谢谢Justin。我提出了一个新问题。