2017-09-04 380 views
1

我试图插入值到数据框中的字段是string键入postgresql数据库中字段很大int类型。将字符串转换为BigInt数据框spark scala

我没有找到如何将它们铸造成大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/[email protected]//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 

任何帮助使用大诠释将appreciated.I知道scala支持大诠释,但我该怎么办呢?

回答

1

对于大的整数,你应该使用LongType

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

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

您还可以使用DecimalType

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

cabArticleGold.withColumn("CAB", 'CAB.cast("decimal(38, 0)")) 
相关问题