使用sparkcontext将结果集写入hdfs(一个连接 - 多个查询)

时间:2016-11-07 05:30:49

标签: sql scala apache-spark teradata volatile

在Scala中,我需要使用相同的连接来运行多个查询,并使用spark上下文将输出写入HDFS。它必须是相同的连接,因为一些查询创建了易失性表,如果连接关闭,易失性表将消失。

我知道以下功能:

val jdbcDF = sqlContext.read.format("jdbc").options(
  Map("url" -> "jdbc:postgresql:dbserver",
  "dbtable" -> "schema.tablename")).load()

但是每次运行查询时都需要创建连接。还有其他选择吗?我可以从连接对象获取结果集,但是如何让rs到sqlcontext将数据写入HDFS?

1 个答案:

答案 0 :(得分:1)

AFAIK您无法在多个工作人员之间共享相同的连接。每个分区可以在不同的机器上处理,因此它们不能以旧方法共享一个连接,即jdbcrdd或使用数据帧的新方法。

请看看

然而,我发现了一些有趣的东西(不是内置的api选项,我还没有测试过)ShardedJdbcRDD.scala你可以这样试试。