• 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!

Posts recentes

Ver tudo