Я не должен задавать этот вопрос, и я действительно не хочу его спрашивать, но я заблудился. Я вижу множество руководств, в которых в качестве примера используется wordcount. Но у меня возникла проблема с тем, чтобы понять, как использовать его, например, с sparkSql, у меня есть следующий запрос

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

Это дает мне набор данных? теперь я могу перебирать totalItem и печатать результат, но я хочу подсчитать, сколько раз встречается этот элемент. Это можно сделать с помощью map и reduce, но я не знаю, как это сделать. Кроме того, если кто-то знает sparkSql с использованием java, где мы можем хранить результат в переменной, а не использовать show(), я был бы очень благодарен

1
Saurab 18 Июл 2017 в 12:23

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

Надеюсь, он ответит на ваши вопросы

1
Sachin Janani 18 Июл 2017 в 13:20
Спасибо, долго писал. но у меня все еще есть вопросы
 – 
Saurab
18 Июл 2017 в 13:37
Это старый способ написания и, возможно, не оптимизировать, но если вы делаете что-то, что невозможно с sql или dsl, вы можете использовать карту и уменьшить. Если вы используете sql, тогда создается план оптимизации, чтобы избежать ненужных вычислений
 – 
Sachin Janani
18 Июл 2017 в 13:41
Так что делать это JavaPairRDD<String, Integer> counts =totalItem.toJavaRDD().mapToPair(x -> new Tuple2<>(x.toString(), 1)).reduceByKey((x, y) -> x + y);System.out.println(counts.collect().get(8)); плохо?
 – 
Saurab
18 Июл 2017 в 13:42
Как я уже сказал, сделать это неплохо, но может быть не быстро, так как вы можете продолжать сериализацию и десериализацию и много типов приведения типов, в то время как большая часть операции может быть оптимизирована, о чем позаботится искровый sql
 – 
Sachin Janani
18 Июл 2017 в 13:44
Спасибо, я выбрал ваш ответ, за меня все решено. Знаете ли вы какую-либо ссылку, по которой я могу изучить Spark sql с java, потому что большая часть учебника - это просто копирование и вставка проблемы wordcount.
 – 
Saurab
18 Июл 2017 в 13:48