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,但不知道如何继续。谢谢
1条答案
按热度按时间jdzmm42g1#
您可以将javardd prdd注册为一个表,然后在sql语句中使用
dataframe schemapeople=sqlcontext.createdataframe(prdd,person.class);schemapeople.registertemptable(“人”); //sql可以在已注册为表的RDD上运行。 dataframe=sqlcontext.sql(“按名称从人员组中选择sum(年龄)、sum(薪水)) //sql查询的结果是dataframe,支持所有正常的rdd操作
阅读更多:http://spark.apache.org/docs/latest/sql-programming-guide.html#running-以编程方式执行sql查询