我需要创建parquet文件,从jdbc中阅读。表很大,所有列都是varchar。所以我创建了一个新的列,用一个随机整数来进行分区。
所以我读取jdbc看起来像这样:
data_df = sparkSession.read.format('jdbc') \
.option('url', 'jdbc:netezza://host:port/db') \
.option('dbtable', """(SELECT * FROM schema.table) A""") \
.option('user', 'user') \
.option('password', 'password') \
.option('partitionColumn','random_number') \
.option('lowerBound','1') \
.option('upperBound','200') \
.option('numPartitions','200') \
.load()
我写的 parquet 是这样的
第一个月
生成的parquet还包含“random_number”列,但我只创建了用于分区的列,是否有办法在写入parquet文件时排除该列?
谢谢你的帮助,我是新来的spark:)
我希望排除random_number列,但不知道在需要该列进行分区时是否可以这样做
1条答案
按热度按时间iszxjhcz1#
所以,如果你想在内存中使用一个列进行重新分区,但不想写入它,你可以在写入之前使用. repartition(col("random_number"))删除该列,然后写入你的数据:
然后: