2017-09-04 5 views
1

필드가 큰 int 유형 인 유형의 데이터를 postgresql 데이터베이스에 삽입하려는 데이터 프레임에 값을 삽입하려고합니다.문자열을 BigInt 데이터 프레임 스파크 스칼라로 변환

큰 숫자로 캐스팅하는 방법을 찾지 못했습니다. int.I IntegerType 전에 사용했는데 아무런 문제가 없습니다. 그러나이 dataframe와 나 음의 정수

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)")) 
관련 문제