用例类修剪 DataFrame
Posted
技术标签:
【中文标题】用例类修剪 DataFrame【英文标题】:Use Case Class To Trim DataFrame 【发布时间】:2018-10-15 20:09:44 【问题描述】:我有以下代码。在 cosmo 中存储包含数据的巨型 JSON。目前,display 命令显示 Azure Cosmos DB 位置中的所有字段。但是,我只想显示 Employee Class 中指定的字段; 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】:您需要从案例类对象中创建一个架构,然后使用架构方法应用创建的架构进行读取。
val config = Config(sourceConfigMap)
val schema = ScalaReflection.schemaFor[Employee].dataType.asInstanceOf[StructType]
val output = spark.sqlContext.read.schema(schema).cosmosDB(config)
【讨论】:
以上是关于用例类修剪 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章