【发布时间】:2018-11-09 06:38:06
【问题描述】:
我正在尝试将 .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 的文件夹,而不是我正在寻找的 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)
如何做到最好?使用windows,python 2.7。
【问题讨论】:
-
@lwileczek 这是一个不同的问题,因为链接的问题明确要求 Spark,这只是一般使用 Python。