【Hadoop MapReduce】文字列とfloatの比較 [Hadoop / Spark]
Pythonを使って、MapperとReducerを書いていたのだが、初歩的なミスをいくつかしたのでその備忘録として。
文字列の大小を比較する際
salesMax = max(thisSale, salesMax)
という関数を使ったのだが、上手くmax値を集計できていませんでした。
よくよく調べてみると、
thisSaleは文字型
salesMaxは数値型でした。
驚きなのが、文字型と数値型を比較できることなのですが。。。
自分としては、文字型と数値型を比較するとエラーで比較できないと思っていたのですが、プログラムの方で良しなに(?)大小比較をしていたようで、
499.99
99.99
↑
これらを文字列として、比較すると、99.99の方が選ばれて変な結果になってしまいました。
正しく書くと、
salesMax = max(float(thisSale), salesMax)
と数値型にそろえる必要があります。
文字列の大小を比較する際
salesMax = max(thisSale, salesMax)
という関数を使ったのだが、上手くmax値を集計できていませんでした。
よくよく調べてみると、
thisSaleは文字型
salesMaxは数値型でした。
驚きなのが、文字型と数値型を比較できることなのですが。。。
自分としては、文字型と数値型を比較するとエラーで比較できないと思っていたのですが、プログラムの方で良しなに(?)大小比較をしていたようで、
499.99
99.99
↑
これらを文字列として、比較すると、99.99の方が選ばれて変な結果になってしまいました。
正しく書くと、
salesMax = max(float(thisSale), salesMax)
と数値型にそろえる必要があります。
2015-03-05 20:00
nice!(29)
コメント(0)
トラックバック(0)
コメント 0