Аналогичные алгоритмы хеширования в Teradata и Spark - PullRequest
0 голосов
/ 16 января 2019

Я выполняю инкрементальную загрузку данных, поступающих из базы данных Teradata, и сохраняю их в виде файла паркета. Поскольку таблицы из Teradata содержат миллиарды строк, я бы хотел, чтобы мой скрипт PySpark сравнивал значения хеш-функции.

Таблица Teradata: Пример таблицы из Teradata

Текущий сохраненный файл паркета: Данные хранятся в файле паркета

Мой скрипт PySpark использует соединение для чтения JDBC для вызова teradata:

tdDF = return spark.read \
  .format("jdbc") \
  .option("driver", "com.teradata.jdbc.TeraDriver") \
  .option("url", "jdbc:teradata://someip/DATABASE=somedb,MAYBENULL=ON") \
  .option("dbtable", "(SELECT * FROM somedb.table)tmp")

Сценарий Spark, читаемый на паркете:

myDF = spark.read.parquet("myParquet")
myDF.createOrReplaceTempView("myDF")
spark.sql("select * from myDF").show()

Как я могу:

  • включить в мой вызов teradata хеш-функцию, которая возвращает хэш всех значений строки (этот хеш должен выполняться для Teradata)
  • Включить хэш-функцию в мой код PySpark при чтении в файле партера, который возвращает хэш всех значений строки (этот хэш должен выполняться в Spark)
  • Сравните эти два хэша, чтобы увидеть, какая дельта из Teradata должна быть загружена
...