据我所知,MyBatis 非常好。它可以将 jdbc 结果映射到对象。对于火花SQL查询结果,有什么好方法可以将火花查询结果映射到对象吗?谢谢
据我所知,从Spark SQL查询收到的结果是一个SchemaRDD,一个实体,您可以在其上执行在标准RDD上授予的所有操作。回到你的问题,目前,将查询结果映射到类(以及对象)的唯一方法是使用经典的映射操作手动操作来操作存储在 SchemaRDD 中返回的行中的信息。
在这里,您将如何查询一个表,将其转换为类YourClass
的对象,转换为JavaRDD
然后将其写入文件。文件中的每一行都将由YourClass.toString()
构造而成
DataFrame sqlQuery = sqlContext.sql("SELECT a,b,c FROM table");
JavaRDD<Triple> resultRows = sqlQuery.javaRDD().map(
new Function<Row, YourClass>() {
public YourClass call(Row row) {
YourClass t = new YourClass(row.getString(0), row.getString(1), row.getString(2));
return t;
}
});
resultRows.saveAsTextFile(outputFolderPath);