Spark Sql JDB C для RDBMS эффективно рассчитывает количество таблиц - PullRequest
0 голосов
/ 02 апреля 2020

Считайте фрейм данных spark jdb c в таблицу rdbms, как показано ниже

val df = spark.read("jdbc").option("url", url).option("dbtable", "schema.table").option("user", user).option("password",passwor).load()
df.count

Это действие подсчета не рекомендуется, поскольку оно будет загружать данные в слой искры и считать в слое Spark вместо нажатия запрос на обратный отсчет до источника данных jdb c. Каков эффективный способ подсчета в этом сценарии?

1 Ответ

2 голосов
/ 02 апреля 2020

Обычно count будет использоваться только один раз в вашей бизнес-логи c (это всего лишь предположение), поэтому рекомендуемый способ сделать это - использовать стандарт jdbc connection и execute и sql statement, который считает строки , Таким образом, он будет выполняться непосредственно в базе данных, а не через искру. Что-то вроде этого может помочь вам:

 val query = s"select count(*) from schema.table"
    val connection = getMySqlConnection(...)
    val rs = connection.createStatement().executeQuery(query)
    rs.next()
    val count = rs.getLong(1)
    connection.close()
    count
...