2017-05-11 54 views
0

我有一個場景,從輸入文件火花推斷模式,並寫入具有整數數據類型的實木複合地板文件。汽車實木複合地板到蜂巢

但是我們有蜂巢中的表格,其中的字段被定義爲BigInt。目前沒有從int到long的轉換,並且配置單元拋出的錯誤無法將Integer轉換爲Long。我無法將Hive DDL編輯爲Integer數據類型,因爲業務需求將這些字段設置爲Long。 我已經查找了可以在保存之前轉換數據類型的選項。除了我擁有數百個列和顯式的轉換使代碼非常混亂之外,可以完成此操作。

有沒有辦法告訴spark自動轉換數據類型。

回答

0

由於星火1.4版本,你可以在列與數據類型適用於鑄造法:如果您使用的是SQL表達式,你也可以做長

import org.apache.spark.sql.types.IntegerType 
val df2 = df.withColumn("yearTmp", df.year.cast(IntegerType)) 
    .drop("year") 
    .withColumnRenamed("yearTmp", "year") 

假設數據幀DF有列年:

val df2 = df.selectExpr("cast(year as int) year", 
         "make", 
         "model", 
         "comment", 
         "blank") 

欲瞭解更多信息檢查文檔:http://spark.apache.org/docs/1.6.0/api/scala/#org.apache.spark.sql.DataFrame

+0

解決方案適合您嗎? –

+0

@HimatejaMadala:如果它適合你,請將答案作爲正確答案 –