目前,尚无将RDD写入任何DBMS的本地实现。这里是Spark用户列表中相关讨论的链接:一,二
通常,最有效的方法如下:
- 验证RDD中的分区数,它不应太低或太高。如果数目较少,则20-50个分区应该没问题-呼叫
repartition
20个分区,如果数目较高-呼叫coalesce
50个分区 - 调用
mapPartition
转换,在其中调用函数以使用JDBC将记录插入到DBMS中。在此功能中,您可以打开与数据库的连接,并通过此API使用COPY命令,这将使您无需为每个记录使用单独的命令-这样,插入处理将更快
这样,您可以利用最多50个并行连接以并行方式将数据插入Postgres(取决于您的Spark集群大小及其配置)。整个方法可能实现为接受RDD和连接字符串的Java
/ Scala函数



