Skip to content

Instantly share code, notes, and snippets.

@JoseRFJuniorLLMs
Last active October 4, 2019 14:15
Show Gist options
  • Select an option

  • Save JoseRFJuniorLLMs/789b9f2b6187da85c14044f9e759389a to your computer and use it in GitHub Desktop.

Select an option

Save JoseRFJuniorLLMs/789b9f2b6187da85c14044f9e759389a to your computer and use it in GitHub Desktop.
from pyspark import SparkConf
from pyspark.sql import SparkSession, functions as F
conf = SparkConf()
# opcional, mas seria bom definir a quantidade de memória RAM que o driver pode usar para
# um valor razoável (em relação ao tamanho do arquivo que queremos ler), para que não recebamos uma exceção do OOM
conf.set('spark.driver.memory', '6G')
# criar uma sessão de faísca(Spark) - nada pode ser feito sem isso:
spark = SparkSession.builder \
.config(conf=conf) \
.appName('Homework-App') \
.getOrCreate()
# spark.read.text retorna um dataframe, mais fácil de manipular e também mais eficiente
# você também pode usar: spark.sparkContext.textFile (''), mas isso retornará RDD [String]
df = spark.read.text('full/path/to/file.txt)
# spark é "preguiçoso" então, nada aconteceu até agora, além da inicialização da sessão
# vamos chamar .show () para ver se realmente lemos o arquivo e como ele é
df.show ()
# Agora vamos voltar à tarefa: identificar onde o `big data` é usado.
# Para esta tarefa, adicionamos uma coluna ao quadro de dados e a preenchemos com True quando `big data` é identificado em uma linha
df = df.withColumn('has_big_data', F.when(F.col('value').contains('big data'), True).otherwise(False))
df.show()
# e a resposta à lição de casa é selecionar as linhas em que a coluna 'has_big_data' é True
df.select('value').where(F.col('has_big_data')==True).show()
df.select('value').where(F.col('has_big_data')==True).count()
# 6 - o número de linhas que contêm este termo
# só para ver que o `big data` está realmente incluído nessas poucas linhas :)
df.select('value').where(F.col('has_big_data')==True).show(100, False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment