Преобразование csv в файл паркета с помощью python
Я пытаюсь преобразовать CSV файл в файл.parquet.
Файл csv (Temp.csv
) имеет следующий формат
1,Jon,Doe,Denver
Я использую следующий код python, чтобы преобразовать его в паркет
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
import os
if __name__ == "__main__":
sc = SparkContext(appName="CSV2Parquet")
sqlContext = SQLContext(sc)
schema = StructType([
StructField("col1", IntegerType(), True),
StructField("col2", StringType(), True),
StructField("col3", StringType(), True),
StructField("col4", StringType(), True)])
dirname = os.path.dirname(os.path.abspath(__file__))
csvfilename = os.path.join(dirname,'Temp.csv')
rdd = sc.textFile(csvfilename).map(lambda line: line.split(","))
df = sqlContext.createDataFrame(rdd, schema)
parquetfilename = os.path.join(dirname,'output.parquet')
df.write.mode('overwrite').parquet(parquetfilename)
Результатом является только папка с именем output.parquet
а не файл паркета, который я ищу, и следующая ошибка на консоли.
Я также попытался запустить следующий код, чтобы столкнуться с аналогичной проблемой.
from pyspark.sql import SparkSession
import os
spark = SparkSession \
.builder \
.appName("Protob Conversion to Parquet") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
# read csv
dirname = os.path.dirname(os.path.abspath(__file__))
csvfilename = os.path.join(dirname,'Temp.csv')
df = spark.read.csv(csvfilename)
# Displays the content of the DataFrame to stdout
df.show()
parquetfilename = os.path.join(dirname,'output.parquet')
df.write.mode('overwrite').parquet(parquetfilename)
Как это лучше всего сделать? Использование окон, python 2.7.
Ответы
Ответ 1
Используя пакеты pyarrow
и pandas
вы можете конвертировать CSV в Parquet без использования JVM в фоновом режиме:
import pandas as pd
df = pd.read_csv('example.csv')
df.to_parquet('output.parquet')
Одно ограничение, в котором вы будете запускать, - это то, что pyarrow
доступен только для Python 3. 5+ в Windows. Либо используйте Linux/OSX для запуска кода как Python 2, либо обновите свою установку Windows до Python 3.6.
Ответ 2
Но меняется ли тип данных моего CSV файла? Есть ли решение для дублирования с тем же типом данных, как в моем формате CSV