私は本当に大きな整数値、例が含まれデータフレーム抱えている:列値を文字列から小数点に変換するにはどうすればよいですか?
42306810747081022358
私はそれがなく、スパークenvrironment下のJavaで働いていたロングに変換しようとした、私がいました
NumberFormatException: For input string("42306810747081022358")
を取得してそれから私はあまりにも進(BigDecimalの)値に変換しようとしました。繰り返しても、Javaでは簡単に実行できますが、Sparkでは dframe.withColumn( "c_number"、col( "c_a"))キャスト(新しいDecimalType()));
このようにしても例外はありませんが、すべての結果値がnullであることがわかります。ここ
UDF1 cTransformer = new UDF1<String, BigDecimal>() {
@Override
public BigDecimal call(String aString) throws Exception {
return new BigDecimal(aString);
}
};
sqlContext.udf().register("cTransformer", cTransformer, new DecimalType());
dframe = dframe.withColumn("c_number", callUDF("cTransformer", dframe.col("c_a")));
そして再び、私は取得していますすべてがすべてゼロで列があるが:
は、私はまた、この目的のためにUDFを使用しますが、同じ結果を取得しようとしました。
どうすればよいですか?