java - 在Spark Dataset API上使用汇总和分组依据

标签 java hadoop apache-spark

    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,但不知道如何进行。
谢谢

最佳答案

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

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

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

DataFrame青少年= sqlContext.sql(“按名称从人员分组中选择总和(年龄),总和(薪水)”

// SQL查询的结果是DataFrames,并支持所有正常的RDD操作。

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

关于java - 在Spark Dataset API上使用汇总和分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36824347/

相关文章:

java - nameNode无法启动-hadoop-1.0.3 Ubuntu 13.10单节点集群

hadoop - 我们可以使用nosql数据库作为Hive Metastore吗?

arrays - 将列与多行数组合并

apache-spark - kafka - 多个主题与多个分区

java - 在Java中获取第一组正则表达式

java - 正则表达式仅在字符串之后匹配重复模式

java - 如何将数据库中的所有记录显示到JTable?

java - Hadoop 中 Mapper.Context 的 API 文档在哪里?

Azure Synapse Spark LIVY_JOB_STATE_ERROR

java - 描绘超出字符范围