Spark SQL
Consulte dados.
Spark SQL é uma aula grátis de Scala for Backend Engineering & Functional Programming no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Scala for Backend Engineering & Functional Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.
O que é o Spark SQL?
Spark SQL permite consultar dados distribuídos com SQL padrão ou com uma API de DataFrame tipada. Ambos passam pelo mesmo otimizador Catalyst, portanto têm desempenho idêntico.
Visualizações temporárias
Para executar SQL em um DataFrame, registre-o como uma visualização. createOrReplaceTempView permite consultá-lo por nome na sessão atual.
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
df.createOrReplaceTempView("people")Executando uma consulta SQL
Use spark.sql com uma string SQL. Ele retorna um novo DataFrame que pode ser transformado ou exibido posteriormente.
val adults = spark.sql("SELECT name FROM people WHERE age >= 18")
adults.show()A DSL de DataFrame
A mesma consulta na DSL tipada. O objeto functions fornece col, comparações e muitas expressões integradas.
import org.apache.spark.sql.functions._
val adults = df.filter(col("age") >= 18).select("name")Selecionando e Criando Aliases
Projete colunas com select e renomeie-as com as / alias. As colunas calculadas usam expressões sobre col.
import org.apache.spark.sql.functions._
df.select(
col("name"),
(col("age") + 1).as("age_next_year")
).show()Filtrando Linhas
where e filter são sinônimos. Combine condições com && e || e use isNull / isNotNull para dados ausentes.
import org.apache.spark.sql.functions._
df.where(col("age") > 20 && col("name").isNotNull).show()Ordenando e Limitando
orderBy ordena (use desc para ordem decrescente), e limit limita a quantidade de linhas retornadas.
import org.apache.spark.sql.functions._
df.orderBy(col("age").desc).limit(5).show()Junções
Faça a junção de dois DataFrames por uma chave com join. Especifique o tipo de junção, como "inner", "left" ou "outer".
val joined = orders.join(customers, Seq("customer_id"), "inner")
joined.show()Funções Integradas
O pacote functions oferece centenas de auxiliares: upper, concat, when, round, funções de data e muito mais.
import org.apache.spark.sql.functions._
df.withColumn("name_upper", upper(col("name")))
.withColumn("category", when(col("age") >= 30, "senior").otherwise("junior"))
.show()Lendo e Gravando Tabelas
O Spark SQL lê e grava em muitos formatos. O Parquet é colunar e eficiente; saveAsTable persiste os dados no metastore.
val data = spark.read.parquet("input.parquet")
data.write.mode("overwrite").parquet("output.parquet")Consulta SQL Semelhante a SQL em Scala Puro
Um análogo independente: consultar uma coleção em memória com métodos de coleção reproduz um SELECT/WHERE do Spark SQL.
object Main {
case class Person(name: String, age: Int)
def main(args: Array[String]): Unit = {
val people = Seq(Person("Alice", 30), Person("Bob", 25))
val adults = people.filter(_.age >= 18).map(_.name)
println(adults.mkString(", "))
}
}Verificação Rápida
O que você precisa fazer com um DataFrame antes de consultá-lo usando spark.sql("SELECT ...")?
Recapitulação
Você consultou dados com o Spark SQL:
- registre visualizações com
createOrReplaceTempView - execute SQL por meio de
spark.sqlou da DSL de DataFrame select,where,orderBy,join- funções integradas e E/S do Parquet
A seguir: agregações.
Perguntas Frequentes
A aula “Spark SQL” é grátis?
Sim — o texto completo de “Spark SQL” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Scala for Backend Engineering & Functional Programming, atualize para CoddyKit PRO. O curso de Scala for Backend Engineering & Functional Programming inclui 4 aulas no total.
O que vou aprender em “Spark SQL”?
Consulte dados. Você pratica Scala for Backend Engineering & Functional Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Scala for Backend Engineering & Functional Programming?
Nenhuma experiência prévia é necessária. Scala for Backend Engineering & Functional Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Spark SQL”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Scala for Backend Engineering & Functional Programming?
Sim. Cada aula de Scala for Backend Engineering & Functional Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.