私のavroスキーマでは、 "TOT_AMT"型を "bytes"型と論理型 "decimal"として定義しました。私は和関数を使用TOT_AMTカラムを合計しようとしたとき、それはエラーを「関数和がBinarytypeない数値型を必要とする」スロー、火花アブロdatabricksを用いてスパークのデータフレームを作成した後Avroのバイト列(10進数の論理型付き)を10進数に変換する方法は?
。
カラムを
名= "TOT_AMT"、 "タイプ"、アブロスキーマで以下のように定義される: "NULL"、{ "タイプ": "バイト"、 "logicaltype": "小数" 、 "精度" 20、 "スケール":10}]
Iがデータフレームを作成し、同様に加算AM、
val df=sqlContext.read.format("com.databricks.spark.avro").load("input dir")
df.agg(sum("TOT_AMT")).show()
データフレームを作成しながら、小数値がBinarytypeとして読み出されると思われます。このような場合、そのような小数点以下の桁でどのように数値演算を実行できますか?このByte配列をBigDecimalに変換してから計算を実行することは可能でしょうか?
データのスケマティックコードまたは概要を提供できますか?特に、削減前の現在のRDDの状態が重要になる可能性があります。明示的な型キャスティングは、おそらくトリックを行うでしょう。 – dennlinger