如何将 spark sql 查询结果映射到对象?

Posted

技术标签:

【中文标题】如何将 spark sql 查询结果映射到对象?【英文标题】:How to map spark sql query result to object? 【发布时间】:2015-02-02 05:17:22 【问题描述】:

据我所知,MyBatis 非常好。它可以将 jdbc 结果映射到一个对象。 对于 spark sql 查询结果,有什么好的方法可以将 spark 查询结果映射到对象吗?谢谢

【问题讨论】:

【参考方案1】:

据我所知,从 Spark SQL 查询收到的结果是一个 SchemaRDD,这是一个实体,您可以在该实体上执行标准 RDD 上授予的所有操作。回到您的问题,目前,将查询结果映射到类(以及因此,对象)的唯一方法是手动使用经典映射操作来操作存储在 SchemaRDD 中返回的行中的信息。

【讨论】:

【参考方案2】:

在这里,您将如何查询表,将其转换为您的类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);

【讨论】:

以上是关于如何将 spark sql 查询结果映射到对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?

如何将休眠查询的结果映射到 DTO 对象?

resultMap

将 SQL(不是 JPQL)映射到简单 Java 对象的集合?

ActiveRecord 自定义 SQL 结果自动映射

如何在 spark sql 中创建永久表