Pyspark 不允许我创建存储桶

Posted

技术标签:

【中文标题】Pyspark 不允许我创建存储桶【英文标题】:Pyspark does not allow me to create bucket 【发布时间】:2018-03-21 05:18:19 【问题描述】:

(
    df
    .write
    .partitionBy('Source')
    .bucketBy(8,'destination')
    .saveAsTable('flightdata')

)

AttributeError Traceback(最近一次调用最后一次) 在 () ----> 1 df.write.bucketBy(2,"Source").saveAsTable("table")

AttributeError: 'DataFrameWriter' 对象没有属性 'bucketBy'

【问题讨论】:

【参考方案1】:

看来bucketBy 仅在 spark 2.3.0 中受支持https://spark.apache.org/docs/latest/api/python/_modules/pyspark/sql/readwriter.html#DataFrameWriter.bucketBy

您可以尝试创建一个新的存储桶列

from pyspark.ml.feature import Bucketizer
bucketizer = Bucketizer(splits=[ 0, float('Inf') ],inputCol="destination", outputCol="buckets")
df_with_buckets = bucketizer.setHandleInvalid("keep").transform(df)

然后使用partitionBy(*cols)df_with_buckets.write.partitionBy('buckets').saveAsTable("table")

【讨论】:

以上是关于Pyspark 不允许我创建存储桶的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark 从 S3 存储桶的子目录中读取所有 JSON 文件

S3 存储桶 .txt.gz 通过 PySpark 复制

从 pyspark 访问 S3 存储桶中的文件

无法使用 Pyspark 2.4.4 读取 s3 存储桶中的镶木地板文件

如何从 s3 存储桶中获取 Pyspark 中带有前缀的文件?

Pyspark 数据帧从一个存储桶中读取,并在同一作业中使用不同的 KMS 密钥写入另一个存储桶