mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
9.0 KiB
9.0 KiB
In [3]:
import org.apache.spark.sql.types._
//Change per your installation
val user="sa"
val password="****"
val database = "MyTestDatabase"
val sourceDir = "/file_streaming"
val datapool_table = "streaming_DataPoolTable"
val datasource_name = "test_data_src"
val schema = StructType(Seq(
StructField("age",StringType,true), StructField("workclass",StringType,true), StructField("fnlwgt",StringType,true), StructField("education",StringType,true),
StructField("education-num",StringType,true), StructField("marital-status",StringType,true), StructField("occupation",StringType,true),
StructField("relationship",StringType,true), StructField("race",StringType,true), StructField("sex",StringType,true), StructField("capital-gain",StringType,true),
StructField("capital-loss",StringType,true), StructField("hours-per-week",StringType,true), StructField("native-country",StringType,true), StructField("income",StringType,true)
))
val hostname = "master-0.master-svc"
val port = 1433
val url = s"jdbc:sqlserver://${hostname}:${port};database=${database};user=${user};password=${password};"Starting Spark application
| ID | YARN Application ID | Kind | State | Spark UI | Driver log | Current session? |
|---|---|---|---|---|---|---|
| 74 | application_1568069140269_0144 | spark | idle | Link | Link | ✔ |
SparkSession available as 'spark'.
import org.apache.spark.sql.types._ user: String = sa password: String = Yukon900 database: String = MyTestDatabase sourceDir: String = /file_streaming datapool_table: String = streaming_DataPoolTable datasource_name: String = test_data_src schema: org.apache.spark.sql.types.StructType = StructType(StructField(age,StringType,true), StructField(workclass,StringType,true), StructField(fnlwgt,StringType,true), StructField(education,StringType,true), StructField(education-num,StringType,true), StructField(marital-status,StringType,true), StructField(occupation,StringType,true), StructField(relationship,StringType,true), StructField(race,StringType,true), StructField(sex,StringType,true), StructField(capital-gain,StringType,true), StructField(capital-loss,StringType,true), StructField(hours-per-week,StringType,true), StructField(native-country,StringType,true), StructField(income,StringType,true)) hostname: String = master-0.master-svc port: Int = 1433 url: String = jdbc:sqlserver://master-0.master-svc:1433;database=MyTestDatabase;user=sa;password=Yukon900;
In [8]:
import org.apache.spark.sql.{SparkSession, SaveMode, Row, DataFrame}
val df = spark.readStream.format("csv").schema(schema).option("header", true).load(sourceDir)
val query = df.writeStream.outputMode("append").foreachBatch{ (batchDF: DataFrame, batchId: Long) =>
batchDF.write
.format("com.microsoft.sqlserver.jdbc.spark")
.mode("append")
.option("url", url)
.option("dbtable", datapool_table)
.option("user", user)
.option("password", password)
.option("dataPoolDataSource",datasource_name).save()
}.start()
query.processAllAvailable()
query.awaitTermination(40000)
import org.apache.spark.sql.{SparkSession, SaveMode, Row, DataFrame}
df: org.apache.spark.sql.DataFrame = [age: string, workclass: string ... 13 more fields]
query: org.apache.spark.sql.streaming.StreamingQuery = org.apache.spark.sql.execution.streaming.StreamingQueryWrapper@1033421d
res14: Boolean = false
In [9]:
def df_read(dbtable: String,
url: String,
dataPoolDataSource: String=""): DataFrame = {
spark.read
.format("com.microsoft.sqlserver.jdbc.spark")
.option("url", url)
.option("dbtable", dbtable)
.option("user", user)
.option("password", password)
.option("dataPoolDataSource", dataPoolDataSource)
.load()
}
val new_df = df_read(datapool_table, url, dataPoolDataSource=datasource_name)
println("Number of rows is " + new_df.count)df_read: (dbtable: String, url: String, dataPoolDataSource: String)org.apache.spark.sql.DataFrame new_df: org.apache.spark.sql.DataFrame = [age: string, workclass: string ... 13 more fields] Number of rows is 618665