2017-11-27 13 views
-3

(K,V)入力の配列が(製品名、価格)を保持する小売シナリオを考えてみましょう。上記の要件を達成するための割引提供のために500で減算されるすべてのキーの必要性の価値apacheの点火で以下を解決する方法

利用スパークロジック、

入力

{(Jeans,2000),(Smart phone,10000),(Watch,3000)}

予想される出力enter code here

{(Jeans,1500),(Smart phone,9500),(Watch,2500)}

I ha以下のコードを試しました。エラーが発生しました。それらを修正するのを手伝ってください。 import java.util.Arrays; import java.util.Iterator;

import org.apache.spark.SparkConf; 
import org.apache.spark.api.java.JavaPairRDD; 
import org.apache.spark.api.java.JavaRDD; 
import org.apache.spark.api.java.JavaSparkContext; 
import org.apache.spark.api.java.function.FlatMapFunction; 
import org.apache.spark.api.java.function.Function; 
import org.apache.spark.api.java.function.Function2; 
import org.apache.spark.api.java.function.PairFunction; 

import scala.Tuple2; 

public class PairRDDAgg { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    SparkConf conf = new 
SparkConf().setAppName("Line_Count").setMaster("local"); 
    JavaSparkContext sc = new JavaSparkContext(conf); 

    JavaRDD<String> input = 
sc.textFile("C:/Users/xxxx/Documents/retail.txt"); 



    JavaPairRDD<String, Integer> counts = input.mapValues(new Function() { 
     /** 
     * 
     */ 
     private static final long serialVersionUID = 1L; 

     public Integer call(Integer i) { 
      return (i-500); 
     } 


    }); 

    System.out.println(counts.collect()); 

    sc.close(); 
} 
} 
+0

少なくとも宿題ビットに取り組んでみてください! – eliasah

+1

コードは私のためではなく、このサイトの仕組みだけです – eliasah

+0

https://stackoverflow.com/help/mcve – eliasah

答えて

0

あなたはこれを試すことができ、次のようになります。

scala> val dataset = spark.createDataset(Seq(("Jeans",2000),("Smart phone",10000),("Watch",3000))) 
dataset: org.apache.spark.sql.Dataset[(String, Int)] = [_1: string, _2: int] 

scala> dataset.map (x => (x._1, x._2 - 500)).show 

+-----------+----+ 
|   _1| _2| 
+-----------+----+ 
|  Jeans|1500| 
|Smart phone|9500| 
|  Watch|2500| 
+-----------+----+ 
+0

返事ありがとう。あなたはJavaでこれを行う方法を教えてください – Nandini

+0

申し訳ありませんが、私はJavaで動作しません。 – Learner

1

利用mapValues()関数

あなたのシナリオの例では、

rdd.mapValues(x => x-500); 
関連する問題