PySaprk 将 DataFrame 数据保存为 Hive 分区表
创建 SparkSession
from pyspark.sql import SparkSession
spark = SparkSession.builder.enableHiveSupport().appName('test_app').getOrCreate()
sc = spark.sparkContext
hc = HiveContext(sc)
1. Spark创建分区表
# 可以将append改为overwrite,这样如果表已存在会删掉之前的表,新建表
df.write.saveAsTable(save_table, mode='append', partitionBy=['pt_day'])
saveAsTable 会自动创建hive表,partitionBy指定分区字段,默认存储为 parquet 文件格式。对于从文件生成的DataFrame,字段类型也是自动转换的,有时会转换成不符合要求的类型。
需要自定义字段类型的,可以在创建DataFrame时指定类型:
from pyspark.sql.types import StringType, StructType, BooleanType, StructField
schema = StructType([
StructField("vin", StringType(), True),
StructField("cust_id", StringType(), True),
StructField("is_maintain