将字符串转换为BigInt dataframe spark scala

时间:2017-09-04 14:59:44

标签: postgresql apache-spark dataframe apache-spark-sql

我正在尝试将值插入到数据框中,其中字段string键入postgresql数据库,其中字段为大int类型。

我没有找到如何将它们转换为大int。我在IntegerType之前使用过我没有遇到任何问题。但是使用这个数据帧,强制转换会导致负整数

val sparkSession = SparkSession.builder.master("local").appName("spark session example").getOrCreate()

  val cabArticleGold = sparkSession.sqlContext.load("jdbc", Map("url" -> "jdbc:oracle:thin:System/maher@//localhost:1521/XE", "dbtable" -> "IPTECH.TMP_ARTCAB")).select("CODEART", "CAB").limit(10)
import sparkSession.sqlContext.implicits._
 cabArticleGold.show()
cabArticleGold.withColumn("CAB",'CAB.cast(IntegerType)).foreach(row=>println(row(1)))

232524399
-1613725482
232524423
-1613725465
232524437
-1191331072
3486
-1639094853
232524461
1564177573

任何使用Big Int的帮助都会受到赞赏。我知道scala支持Big Int,但我该怎么办呢?

1 个答案:

答案 0 :(得分:4)

对于大整数,您应该使用LongType

.col:hover > .back

cabArticleGold.withColumn("CAB", 'CAB.cast(LongType))

您也可以使用cabArticleGold.withColumn("CAB", 'CAB.cast("long"))

DecimalType

cabArticleGold.withColumn("CAB", 'CAB.cast(DecimalType(38, 0)))