- JP
Lendo arquivo CSV com Apache Spark
Apache Spark atua muito bem na leitura de diversos arquivos para extração de dados, nesse post vamos criar um exemplo de leitura de um arquivo CSV utilizando Spark, Java e Maven. Para quem não sabe o que é um CSV, é um arquivo texto que separa as colunas entre ponto e vírgula ( ; ).
Maven
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
Conteúdo do CSV (Crie um arquivo chamado movies.csv com este conteúdo)
title;year;rating
The Shawshank Redemption;1994;9.3
The Godfather;1972;9.2
The Dark Knight;2008;9.0
The Lord of the Rings: The Return of the King ;2003;8.9
Pulp Fiction;1994;8.9
Fight Club;1999;8.8
Star Wars: Episode V - The Empire Strikes Back;1980;8.7
Goodfellas;1990;8.7
Star Wars;1977;8.6
Criando SparkSession
SparkConf sparkConf = new SparkConf();
sparkConf.setMaster("local[*]");
sparkConf.setAppName("app");
SparkSession sparkSession = SparkSession.builder()
.config(sparkConf)
.getOrCreate();
Executando a leitura
Dataset<Row> ds = sparkSession.read()
.format("CSV")
.option("sep",";")
.option("inferSchema", "true")
.option("header", "true")
.load("movies.csv");
ds.select("title","year","rating").show();
Resultado

Entendendo alguns parâmetros
.option("sep", ";"): Define a utilização de um separador padrão para a leitura do arquivo, neste caso o separador é o ponto e vírgula (;)
.option("inferSchema", "true"): O parâmetro inferSchema possibilita inferir o(s) arquivo(s) afim de entender (adivinhar) os tipos dos dados de cada campo
.option("header", "true"): Habilitar o parâmetro header possibilita utilizar o nome de cada campo definido no cabeçalho do arquivo
.load("movies.csv"): movies.csv é o nome do arquivo a ser lido
Curtiu? Espero que sim, até mais!