【发布时间】:2018-04-09 15:24:29
【问题描述】:
有没有办法限制使用 spark sql 2.2.0 从 jdbc 源获取的记录数?
我正在处理将大量 >200M 记录从一个 MS Sql Server 表移动(和转换)到另一个的任务:
val spark = SparkSession
.builder()
.appName("co.smith.copydata")
.getOrCreate()
val sourceData = spark
.read
.format("jdbc")
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
.option("url", jdbcSqlConnStr)
.option("dbtable", sourceTableName)
.load()
.take(limit)
虽然它有效,但它显然首先从数据库中加载所有 200M 记录,首先花费了 18 分钟的时间,然后返回我希望用于测试和开发目的的有限数量的记录。
在 take(...) 和 load() 之间切换会产生编译错误。
我很欣赏可以将示例数据复制到较小的表中、使用 SSIS 或其他 etl 工具的方法。
我真的很好奇是否有办法使用 spark、sql 和 jdbc 来实现我的目标。
【问题讨论】:
标签: sql scala apache-spark jdbc