如何从表中传输数据集?

问题描述:

我必须使用spark将sql server表中的数据加载到本地文件系统中的csv中。以下是我使用的代码。如何从表中传输数据集?

val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
val jdbcSqlConnStr = "jdbc:sqlserver://HostIP:1433;databaseName=DBName;user=UserName;password=PWD;" 
val jdbcDbTable = "dbo.Table" 
val jdbcDF = sqlContext.read.format("jdbc").option("url",jdbcSqlConnStr).option("dbtable",jdbcDbTable).load() 
jdbcDF.write.format("com.databricks.spark.csv").save("D:\\Spark\\2") 

这工作正常。我需要尝试其他更好的方法来进一步加快上述方法。

是否有任何方法可以直接从sql server中传输表并写入文件系统,而不是在内存中存储一​​段时间。这是否比上述表现更好?如果是的话,是否有人可以提供相同的详细信息

是否有任何方法可以直接从sql server中传输表并将其写入文件系统,而不是在内存中存储一​​段时间。

当前版本的Apache Spark 2.2.0(并且需要一些编码)不直接支持该功能。

您可以使用Spark Structured Streaming(这是一个模块来连续执行结构化查询)并编写一个自定义流Source,它将执行新的行获取并创建一个DataFrame进行处理。

这几乎需要将您的代码更改为使用readStream(而不是read)和自定义格式。