我在AWS S3中有一个名为's3a:// devices'的存储桶
我正在尝试使用下面的代码根据公司名称向其中写入数据框。
df = df.withColumn("companyname_part", df["companyname"])
df.repartition("companyname_part").dropDuplicates().write.mode("append").partitionBy("companyname_part").parquet('s3a://devices/')
我对上面的存储和每日增量代码有一些疑问。
如果我每天提取所有当前数据并想每天覆盖和删除重复项,是否应该将上述代码更改为每天以“ overwrite”运行? S3存储桶的先前版本会被每个分区覆盖吗?
是否存在可以自动执行的“ HDFS”命令,或者可以通过os.command / subprocess在PySpark脚本中使用的命令来获取目录的“ companyname_part =“部分,以便它只读取“ =”之后的值。我担心所有以相同文本开头的分区都会使Athena查询的速度变慢。
是否有人对S3的最佳分区有反馈/建议?我正在使用此分区列,因为它将是API的查找。但是我对分区的最佳大小(兆字节)感到好奇。 5000太多了吗?