2017-10-18 69 views
0

我必須使用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中傳輸表並寫入文件系統,而不是在內存中存儲一​​段時間。這是否比上述表現更好?如果是的話,是否有人可以提供相同的詳細信息

回答

0

是否有任何方法可以直接從sql server中傳輸表並將其寫入文件系統,而不是在內存中存儲一​​段時間。

當前版本的Apache Spark 2.2.0(並且需要一些編碼)不直接支持該功能。

您可以使用Spark Structured Streaming(這是一個模塊來連續執行結構化查詢)並編寫一個自定義流Source,它將執行新的行獲取並創建一個DataFrame進行處理。

這幾乎需要將您的代碼更改爲使用readStream(而不是read)和自定義格式。

相關問題