在相等和相同的分区中分割字符串值

时间:2019-10-07 22:50:11

标签: pyspark-sql data-partitioning

无论数据键是什么,每次将数据重新运行相同的分区值时,我都需要将数据划分为80个分区。是否有任何可用于实现相同的算法。 关键是多个字段的组合。

我正计划为密钥组合生成一个替代密钥,并使用最小值和最大值将范围函数应用于将函数拆分为所需数量的parittons。但是,如果相同的密钥明天到达,我必须回头获取代理密钥,以便相同的密钥落在相同的分区上。

是否存在任何现有的算法/公式pyspark函数,我在其中传递字符串值,每次都会返回相同的数字,并确保其均等地分配字符串值?

df_1=spark.sql("select column_1,column_2,column_2,hash(column_1) % 20 as part from temptable")
df_1.createOrReplaceTempView("test")
spark.sql("select  part,count(*) from test group by part").show(160,False)

1 个答案:

答案 0 :(得分:0)

如果您不能使用数字键而只能使用模数,那么...

对字符串值使用稳定的哈希值,例如python hash() built in,并对其进行mod 80。它将整齐地分成80个桶(编号0-79)。

例如像这样的东西:

etc/npmrc