从Mysql读取为流

时间:2018-07-03 08:04:20

标签: apache-spark apache-spark-sql

当我从MySql数据库中读取时,

    Map<String,String> jdbcOptions = new HashMap<String,String>();
                jdbcOptions.put("url", "url_");
                jdbcOptions.put("driver", "com.mysql.jdbc.Driver");
                jdbcOptions.put("dbtable", "tab");
                jdbcOptions.put("user", "root");
                jdbcOptions.put("password", "1234");
  Dataset<Row> ds =   sparkSession.read().format("jdbc").options(jdbcOptions).load(); 

我正在寻找如何读取记录行并将其放入Stream

感谢您提供示例。

1 个答案:

答案 0 :(得分:0)

好吧,你可以这样写:

    Dataset<Row> ds = //...;
    Stream<Row> stream = Arrays.stream(ds.collect());

但是请注意,collect()是一个操作,因此这将触发执行,它将从该表中获取所有结果,并将所有信息发送至驱动程序。将作为Row数组存储在内存中,如果表太大而无法容纳在内存中,则可能导致内存不足错误。 另外,请注意,这可能不是从数据库中获取数据的最有效方式。