1

我不应该问这个问题,我真的不想问,但我迷路了。我看到很多以wordcount为例的教程。但我有问题,了解如何与sparkSql 使用它,例如,我有以下查询Spark:使用map并使用SparkSql减少

Dataset<Row> totalItem = spark.sql(" select icode from bigmart.o_sales"); 

它使我的数据集?现在我可以迭代totalItem和打印结果,但我想要计算该项目发​​生的次数。这可以用map和reduce来完成,但我不知道该怎么做。 此外,如果有人用java知道sparkSql在这里我们可以存储结果变量,而不是使用show(),我会很gratefull

回答

1

如果你想算一个项目多少次发生时,您可以使用sparksql查询本身做如下:

spark.sql("select icode,count(icode) from bigmart.o_sales group by icode")

,或者你可以按如下方式使用API​​:

val df=spark.table("bigmart.o_sales").groupBy($"icode").count.show 

希望它能回答您的问题

+0

谢谢,我正在写很长的路。但我仍然有一些问题 – Saurab

+0

它的旧的写作方式,可能不会被优化,但如果你正在做的事情是不可能的与SQL或dsl比你可以使用地图和减少。如果你使用SQL然后优化计划生成避免不必要的计算 –

+0

so,doing this 'JavaPairRDD counts = totalItem.toJavaRDD()。mapToPair(x - > new Tuple2 <>(x.toString(),1))。reduceByKey((x,y ) - > x + y); System.out.println(counts.collect()。get(8));' 不好? – Saurab