我正在尝试将impala查询的输出转换为Spark RDD(或数据帧)。可以找到JdbcRDD的文档here。通过cloudera的JDBC驱动程序连接和查询impala工作得很好。问题是JdbcRDD需要上限和下限以及页面的PreparedStatement sql语句。
在查询impala时,我似乎无法使分页PreparedStatements工作。这是什么语法?我找不到Impala docs。
我试图避免在火花驱动器上收集整个结果集,这就是为什么我要从这个逻辑中移动(这完全有效):
val resultSetList = Iterator.continually((rs.next(), rs)).takeWhile(_._1).map(r => {
getRowFromResultSet(r._2) // (ResultSet) => (spark.sql.Row)
}).toList
sc.parallelize(resultSetList)
使用JdbcRDD,它将自动并行化数据并将其分布到集群中。