Caracteres estranhos ao ler arquivo CSV compactado [duplicado]

Jan 12 2021

Estou tentando ler um arquivo CSV, que salvei como um arquivo codificado em UTF-8. Quando tento ler o arquivo com o Pandas, demoro muito, mas obtenho a saída desejada.

out_pd = pd.read_csv('../files/example_file_out.csv.gzip', sep='\t', encoding='utf-8', compression='gzip')

Fazendo quase o mesmo no Spark para ler exatamente o mesmo arquivo do HDFS:

out_spark = spark.read.format('csv').options(header = "true", sep = "\t", encoding = "UTF-8").load("/Path/to/Folder/example_file_out.csv.gzip" )
out_spark.show()

Com este resultado:

+ ------------------------------------------------- -------------------------------------------------- - + | _ example_file_out.csv.gzip Ѳ Fr$�|�l�A?��̈��L��F��cWZ�F��Ef�^�5C�k�hW���H$ j xH? } N | + ------------------------------------------------- -------------------------------------------------- - + | @ # "<= <^ ... | |? ϟ Ͽ O ... | | ރ Y ^ x o e> Y ... | + ------------------------------------- -------------------------------------------------- -------------- +

Realmente não sei o que estou fazendo de errado. Agradeço antecipadamente por sua ajuda!

Respostas

mck Jan 12 2021 at 03:18

O Spark infere o formato de compactação do arquivo usando a extensão do arquivo. Por padrão, os arquivos compactados com gzip têm a extensão .gz, portanto, se você renomear seu arquivo para ter uma extensão de em .gzvez de .gzip, o Spark deve ser capaz de descompactar o arquivo csv corretamente.