Получить Spark DataFrame из Scala либо - PullRequest
0 голосов
/ 17 октября 2019

У меня есть вывод DataFrame из Scala, поступающий в Either. Я пытаюсь извлечь из него Spark DataFrame.

У меня есть SQL-соединение Azure в блоках данных, которые я использовал для подключения scala. Я могу подключиться к базе данных и вывести запрос. Он дает мне Spark DataFrame в следующем формате Scala, с которым я новичок. Может ли кто-нибудь помочь мне восстановить его, чтобы я мог сохранить его в виде таблицы улья

Результат моего кода Scala:

outputData: Either[org.apache.spark.sql.DataFrame,Boolean] = Left([Product: string, OrderNumber: string ... 27 more fields])

outputData - это Spark DataFrame, который содержит:

Product: string, OrderNumber: string ... 27 more fields..

Я не уверен, как получить DF из Either.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Не зная слишком много о том, как вы извлекаете DataFrame и как / почему вы назначаете правильное значение, позвольте мне написать игрушечную функцию, которая возвращает DataFrame в случае, если ввод четный, в противном случае возвращает Right(false):

import org.apache.spark.sql.DataFrame

def readDfIfEven(n: Int): Either[DataFrame, Boolean] = {
  if (n % 2 == 0) {
    val df = spark.read.format("json").load("/databricks-datasets/definitive-guide/data/flight-data/json/2015-summary.json")
    Left(df)
  } else {
    Right(false)
  }
}

Теперь, чтобы ответить на ваш вопрос:

В данном случае я бы применил сопоставление с шаблоном, чтобы получить DataFrame:

readDfIfEven(2) match {
  case Left(df: DataFrame) => df.show() // note that type annotation here is just for illustration
  case Right(status) => println($"Could not get DataFrame with status ${status}")
}
0 голосов
/ 17 октября 2019

Предположим, у вас есть функция, которая возвращает Либо, как показано ниже.

def abc(): Either[DataFrame, Boolean] = {...}

Чтобы получить DataFrame, вам просто нужно применить функцию get, как показано ниже

abc.left.get

Это будетдать вам DataFrame.

...