Почему Cast (Hashbytes ('sha2_256', ...) как bigint) в Synapse SQL не совпадает с хэшем Pyspark Sha-256 с Bigint ConversPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Cast (Hashbytes ('sha2_256', ...) как bigint) в Synapse SQL не совпадает с хэшем Pyspark Sha-256 с Bigint Convers

Сообщение Anonymous »

Я пытаюсь воспроизвести логику синапса SQL Hashbytes в Pyspark. В SQL мы используем эту строку для генерации хэш -ключа ETL: < /p>

Код: Выделить всё

SELECT CAST(HASHBYTES('SHA2_256', CONCAT_WS('|', [col1], [col2], ...)) AS BIGINT) AS EtlHashKey
FROM sample_table;
< /code>
Этот хэш используется в качестве уникального идентификатора строк. Теперь я хочу генерировать тот же хэш -ключ в Pyspark, используя DataFrame. Вот что я попробовал: < /p>
import hashlib
import struct

def compute_hashkey(*values):
concat = '|'.join(['' if v is None else str(v) for v in values])
hash_bytes = hashlib.sha256(concat.encode('utf-8')).digest()
hashkey = struct.unpack('
Пример ввода:
col1 |  col2
abc | 123
SQL: EtlHashKey = -7418430994879866706
PySpark: EtlHashKey = -5865807261440166157
What I've ruled out:[/b]
Кодирование несоответствия: использование UTF-8 на обоих концах. < /p>
NULL обработка: обрабатывается с использованием пустых строк ('') как concat_ws. struct.unpack ('> q', ...) и struct.unpack ('

Подробнее здесь: [url]https://stackoverflow.com/questions/79713386/why-does-casthashbytessha2-256-as-bigint-in-synapse-sql-not-match-pys[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»