Хэш-функция в искре - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь добавить столбец в фрейм данных, который будет содержать хэш другого столбца .

Я нашел этот фрагмент документации: https://spark.apache.org/docs/2.3.0/api/sql/index.html#hash
И попробовал это:

import org.apache.spark.sql.functions._
val df = spark.read.parquet(...)
val withHashedColumn = df.withColumn("hashed", hash($"my_column"))

Но что за хеш-функция используется этим hash()?Это murmur, sha, md5, что-то еще?

Значение, которое я получаю в этом столбце, является целым числом, поэтому диапазон значений здесь, вероятно, [-2^(31) ... +2^(31-1)].
Могу ли я получить длинное значение здесь?Могу ли я получить строковый хеш вместо этого?
Как мне указать конкретный алгоритм хеширования для этого?
Можно ли использовать пользовательскую хеш-функцию?

1 Ответ

0 голосов
/ 23 мая 2019

Это Murmur на основе исходного кода.

  /**
   * Calculates the hash code of given columns, and returns the result as an int column.
   *
   * @group misc_funcs
   * @since 2.0.0
   */
  @scala.annotation.varargs
  def hash(cols: Column*): Column = withExpr {
    new Murmur3Hash(cols.map(_.expr))
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...