Я выполняю инкрементальную загрузку данных, поступающих из базы данных 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 должна быть загружена