【问题标题】:Using Aggregate and group by on spark Dataset api在 Spark Dataset api 上使用聚合和分组
【发布时间】:2016-04-25 00:26:51
【问题描述】:
    JavaRDD<Person> prdd = sc.textFile("c:\\fls\\people.txt").map(
          new Function<String, Person>() {
                public Person call(String line) throws Exception {
                  String[] parts = line.split(",");
                  Person person = new Person();
                  person.setName(parts[0]);
                  person.setAge(Integer.parseInt(parts[1].trim()));
                 person.setSal(Integer.parseInt(parts[2].trim()));
                  return person;
                }
              });

       RDD<Person>personRDD =  prdd.toRDD(prdd);
       Dataset<Person> dss= sqlContext.createDataset(personRDD ,               Encoders.bean(Person.class));
   GroupedDataset<Row, Person> dq=dss.groupBy(new Column("name"));

我必须在数据集上按名称计算年龄和工资组的总和。 请帮助如何查询数据集?我尝试使用 GroupedDataset 但不知道如何继续。 谢谢

【问题讨论】:

    标签: java hadoop apache-spark


    【解决方案1】:

    您可以将JavaRDD prdd注册为表,然后在SQL语句中使用

    `DataFrame schemaPeople = sqlContext.createDataFrame(prdd, Person.class); schemaPeople.registerTempTable("people");

    // SQL 可以在已注册为表的 RDD 上运行。

    DataFrameteens = sqlContext.sql("SELECT sum(age),sum(salary) FROM people group by name)

    // SQL查询的结果是DataFrame,支持所有正常的RDD操作`

    阅读更多:http://spark.apache.org/docs/latest/sql-programming-guide.html#running-sql-queries-programmatically

    【讨论】:

    • 请帮助我理解如果我使用此代码,那么我正在使用数据框,但我想使用数据集来实现它。我错过了什么吗?
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2013-04-09
    • 2017-04-16
    相关资源
    最近更新 更多