如何从表中传输数据集?
问题描述:
我必须使用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
)和自定义格式。