pyspark实现csv文件转parquet格式(最优解决方案)

最佳解决方案

自动判断各个csv文件字段的数据类型生成parquet文件(inferSchema=‘True’)

sc.stop()
from pyspark.sql import SparkSession
spark = SparkSession.builder.enableHiveSupport().getOrCreate()
df = spark.read.options(header='True', inferSchema='True', delimiter=',').csv("./csv2parquet.csv")
#df.printSchema()
df.write.parquet('./input-parquet135')
print("运行成功")
sc.stop()

参考文档

另一种解决方案

需要自己判断数据的格式然后自定义schema

sc.stop()
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
def parse(line):
    items = line.split(",")
    return (items[0], items[1], items[2])
if __name__ == "__main__":
    sc = SparkContext(appName="CSV2Parquet")
    sqlContext = SQLContext(sc)
    schema = StructType([
        StructField("identity_line_item_id", StringType(), True),
        StructField("identity_time_interval", StringType(), True),
        StructField("bill_invoice_id",IntegerType(), True)])
    rdd = sc.textFile("./csv2parquet.csv").map(parse)
    df = sqlContext.createDataFrame(rdd, schema)
    df.write.parquet('./input-parquet133')
    print("运行成功")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值