У меня есть десятичный столбец «TOT_AMT», определенный как тип «байты» и логический тип «десятичный» в моей схеме avro.
После создания фрейма данных в искре с использованием модулей данных spark-avro, когда я попытался суммировать столбец TOT_AMT с помощью функции суммы, он выдает ошибку «Для суммы функции требуются числовые типы, а не двоичный тип» strong >.
Столбец определен, как показано ниже, в схеме avro,
name = "TOT_AMT", "type": ["null", {"type": "bytes", "logicaltype": "decimal", "precision": 20, "scale": 10}] сильный>
Я создаю фрейм данных и резюмирую, как,
val df=sqlContext.read.format("com.databricks.spark.avro").load("input dir")
df.agg(sum("TOT_AMT")).show()
Кажется, что десятичное значение читается как двоичный тип при создании фрейма данных. В таком случае, как мы можем выполнять числовые операции с такими десятичными столбцами? Можно ли будет преобразовать этот массив байтов в BigDecimal, а затем выполнить вычисления.