用例类修剪DataFrame

时间:2018-10-15 20:09:44

标签: dataframe apache-spark-sql azure-cosmosdb case-class databricks

我有以下代码。在cosmo中,包含数据的巨型JSON被存储。当前,display命令显示Azure Cosmos DB位置中的所有字段。但是,我只想显示在Employee类中指定的字段。 smtNr,smtDt,prcCnyCd和busLinCd。谁能用案例类解释为什么此代码不起作用或如何执行此操作?

val sourceConfigMap = Map(
  "Endpoint" -> "https://endpoint/",
  "Masterkey" -> "masterkey",
  "Database" -> "database",
  "Collection" -> "collection",
  "ConnectionMode" -> "DirectHttps",
)

final case class Employee(smtNr: String, smtDt: String, prcCnyCd: String, busLinCd: String)

val config = Config(sourceConfigMap)
val output = spark.sqlContext.read.cosmosDB(config).as[Employee]

display(output)

1 个答案:

答案 0 :(得分:0)

您需要从Case类对象中创建一个架构,然后使用应用所创建架构的架构方法进行读取。

val config = Config(sourceConfigMap)
val schema = ScalaReflection.schemaFor[Employee].dataType.asInstanceOf[StructType]
val output = spark.sqlContext.read.schema(schema).cosmosDB(config)