使用Scala将数据从EventHub读取到DataBricks中的表

时间:2018-10-29 22:09:52

标签: scala apache-spark events azure-eventhub databricks

我正在尝试从事件中心向Databricks读取数据,并希望为其提供诸如col1,col2等的结构。

问题-我看到只有第一条记录才采用适当的结构,而不会加载其余数据。

事件中心中的数据如下所示-有3条记录,每条记录在DateTime列之后分成两行->

身体 24,5300,123456,1,PLAN-QD,PMT,15/09/15 00:00,1253323,INTEREST,LOAN-AS,空 32,1300,12458,2,PLAN,PMT,15/09/25 00:00,12532123,INTEREST,LOAN,NULL 36,1400,19458,25,PLAN,PMTS,15/11/25 00:00,92532163,INTEREST,LOAN-DS,NULL


列的标题是(在evnt集线器中不存在,仅供参考,但在输出到表中时,它们应该在其中)->  id,Bal,accnum,active,plan,Status,DateTime,Type,Loan,Where

我的代码如下-

导入org.apache.spark.eventhubs。_

导入org.apache.spark.sql.types ._

导入org.apache.spark.sql.functions ._

导入spark.implicits ._

val connectionString = ConnectionStringBuilder(“我的连接字符串”).setEventHubName(“ oth-transactions”)。build //此连接字符串将从eventhub中读取

val customEventhubParameters = EventHubsConf(connectionString)

val ConsumerDF = spark.readStream.format(“ eventhubs”)。options(customEventhubParameters.toMap).option(“ checkpointLocation”,“ / tmp / checkpoint”)。load()

val OTHDF = ConsumerDF.select($“ body”强制转换为“ string”)

val OTHDF2 = OTHDF.withColumn(“ temp”,split(col(“ body”),“ \,”))。select(

(0 until 52).map(i => col("temp").getItem(i).as(s"col$i")): _*

OTHDF2.printSchema

OTHDF2.writeStream.format(“ delta”)。outputMode(“ append”)。option(“ checkpointLocation”,“ / delta / events / _checkpoints / etl-from-json”)。table(“ Table_Name”)< / p>

请问我如何读取所有这些记录并将其放在数据砖中的表中?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您正在使用“ \”而不是“,”来分隔正文列。

HOME