Когда мы создаем искровой фрейм данных, мы отправляем данные в фрейме данных в Куду и Кафку (который, в свою очередь, подбирается и переходит в S3)
Однако точность от того, что мы видим в Куду однажды датафрейм выгружен 1e-15
Теперь, если я использую тот же самый фрейм данных и преобразую его в формат, который Kafka может использовать
override def getKafkaDataFrame(df: DataFrame) : DataFrame = {
df.withColumn("key", to_json(struct(df.col(PK1),
df.col(PK2)))
.withColumn("value", to_json(struct(df.columns.map(col): _*)))
, который в Ход (в отдельном приложении) отправляет на S3
Получается, как это для той же строки, которая 1e-6
У нас также есть метод перехода к Kudu на S3 напрямую (это не поток), и эта точность соответствует Kudu, когда inferSchema имеет значение true, а затем простой dataframe.write
Мне интересно, где эта потеря От чего зависит точность / масштаб, и как мне go исправить это.
Что было предпринято: преобразование всех полей в строковые, преобразование только полей с плавающей запятой в удвоенные числа
Спасибо