Класс варианта использования для обрезки DataFrame - PullRequest
0 голосов
/ 15 октября 2018

У меня есть следующий код.В космическом гиганте хранятся JSON-файлы, содержащие данные.В настоящее время команда отображения отображает все поля в расположении базы данных Azure Cosmos DB.Однако я хочу только отобразить поля, указанные в классе «Сотрудник»;smtNr, smtDt, prcCnyCd и busLinCd.Кто-нибудь может объяснить, почему этот код не работает или как это сделать с помощью case-классов?

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 голосов
/ 17 октября 2018

Вам необходимо создать схему из объекта класса Case, а затем прочитать, используя метод схемы, применяя созданную схему.

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