Created
March 5, 2021 15:26
-
-
Save marcelotournier/f23b8d6463cb04fcc4168866f7be460b to your computer and use it in GitHub Desktop.
Convertendo arquivos csv em parquet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
# CSV => PARQUET | |
Converte um csv para parquet em uma pasta com o mesmo nome. | |
# DEPENDÊNCIAS: | |
Instale o pyspark: | |
pip install pyspark | |
# USO: | |
Especifique o arquivo de input e o separador do arquivo: | |
python converter_csv_para_parquet.py meuarquivogigante.csv --separador ";" | |
# COMO LER PARQUET EM PANDAS: | |
- instale fastparquet usando conda (com pip em windows vc precisa instalar o MS C++ runtime): | |
conda install fastparquet | |
pip install pandas python-snappy pyarrow | |
- No python: | |
import pandas as pd | |
df = pd.read_parquet("arquivo.parquet") | |
""" | |
import os | |
import shutil | |
from sys import argv | |
import pyspark | |
def csv_em_parquet(arquivo, separador): | |
spark = pyspark.sql.SparkSession.builder.getOrCreate() | |
df = spark.read.option("header", "true").option("sep", separador).csv(arquivo) | |
parquet_destino = arquivo + ".parquet" | |
df.coalesce(1).write.parquet(parquet_destino) | |
arq_parquet = [arq for arq in os.listdir(parquet_destino) if arq.endswith(".parquet")][0] | |
shutil.move(os.path.join(parquet_destino, arq_parquet), os.getcwd()) | |
shutil.rmtree(parquet_destino) | |
shutil.move(arq_parquet, parquet_destino) | |
spark.stop() | |
if __name__ == '__main__': | |
import argparse | |
import sys | |
class MyParser(argparse.ArgumentParser): | |
def error(self, message): | |
sys.stderr.write('error: %s\n' % message) | |
self.print_help() | |
sys.exit(2) | |
parser = MyParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) | |
parser.add_argument("arquivo", help="nome do arquivo csv a ser convertido") | |
parser.add_argument("--separador", help="separador de coluna do arquivo csv") | |
args = parser.parse_args() | |
csv_em_parquet(args.arquivo, args.separador) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment