栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spark:优化将DataFrame写入SQL Server

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark:优化将DataFrame写入SQL Server

我们求助于使用azure-sqldb-spark库,而不是使用Spark的默认内置导出功能。这个库给你一个

bulkCopyToSqlDB
这是一个方法 真正的 批量插入,去 了很多
更快。它比内置功能使用起来不太实用,但是以我的经验,还是值得的。

我们或多或少地像这样使用它:

import com.microsoft.azure.sqldb.spark.config.Configimport com.microsoft.azure.sqldb.spark.connect._import com.microsoft.azure.sqldb.spark.query._val options = Map(  "url"          -> "***",  "databaseName" -> "***",  "user"         -> "***",  "password"     -> "***",  "driver"       -> "com.microsoft.sqlserver.jdbc.SQLServerDriver")// first make sure the table exists, with the correct column types// and is properly cleaned up if necessaryval query = dropAndCreateQuery(df, "myTable")val createConfig = Config(options ++ Map("QueryCustom" -> query))spark.sqlContext.sqlDBQuery(createConfig)val bulkConfig = Config(options ++ Map(  "dbTable"-> "myTable",  "bulkCopyBatchSize" -> "20000",  "bulkCopyTableLock" -> "true",  "bulkCopyTimeout"   -> "600"))df.bulkCopyToSqlDB(bulkConfig)

如您所见,我们

CREATE TABLE
自己生成查询。您 可以
让该库创建表,但是这样做
dataframe.limit(0).write.sqlDB(config)
仍然会非常低效,可能需要您缓存您的
Dataframe
,并且不允许您选择
SaveMode

也可能很有趣:

ExclusionRule
在将此库添加到sbt构建中时,我们必须使用an ,否则
assembly
任务将失败。

libraryDependencies += "com.microsoft.azure" % "azure-sqldb-spark" % "1.0.2" excludeAll(  ExclusionRule(organization = "org.apache.spark"))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号