Apache spark 自动浇铸镶木地板到蜂巢
我有一个场景,spark从输入文件推断模式,并使用整数数据类型写入拼花地板文件 但是我们在配置单元中有表,其中字段定义为BigInt。目前还没有从int到long的转换,并且hive抛出了无法将Integer转换为long的错误。我无法将配置单元DDL编辑为整数数据类型,因为业务要求这些字段的长度为。 我已经找到了一个选项,在保存之前可以强制转换数据类型。这是可以做到的,只是我有数百列,显式强制转换使代码非常混乱Apache spark 自动浇铸镶木地板到蜂巢,apache-spark,types,hive,Apache Spark,Types,Hive,我有一个场景,spark从输入文件推断模式,并使用整数数据类型写入拼花地板文件 但是我们在配置单元中有表,其中字段定义为BigInt。目前还没有从int到long的转换,并且hive抛出了无法将Integer转换为long的错误。我无法将配置单元DDL编辑为整数数据类型,因为业务要求这些字段的长度为。 我已经找到了一个选项,在保存之前可以强制转换数据类型。这是可以做到的,只是我有数百列,显式强制转换使代码非常混乱 有没有办法告诉spark自动转换数据类型。自spark 1.4版以来,您可以在列上
有没有办法告诉spark自动转换数据类型。自spark 1.4版以来,您可以在列上应用数据类型转换方法: 假设dataframe df具有列year:Long
import org.apache.spark.sql.types.IntegerType
val df2 = df.withColumn("yearTmp", df.year.cast(IntegerType))
.drop("year")
.withColumnRenamed("yearTmp", "year")
如果使用sql表达式,还可以执行以下操作:
val df2 = df.selectExpr("cast(year as int) year",
"make",
"model",
"comment",
"blank")
有关更多信息,请查看文档:@HimatejaMadala:如果答案对您有效,请确保答案正确