如何在scala spark数据帧中将模式的数据类型转换为另一种数据类型
我有一个数据帧,在这个数据帧中,我在模式中使用LongType而不是IntegerType,数据帧以json格式存储。如何将所有LongType列转换为IntegerType。如果是一个小数据帧,您可以简单地强制转换所有列: (对于大型数据集不建议这样做,因为它使用可变数据帧)如何在scala spark数据帧中将模式的数据类型转换为另一种数据类型,scala,apache-spark,Scala,Apache Spark,我有一个数据帧,在这个数据帧中,我在模式中使用LongType而不是IntegerType,数据帧以json格式存储。如何将所有LongType列转换为IntegerType。如果是一个小数据帧,您可以简单地强制转换所有列: (对于大型数据集不建议这样做,因为它使用可变数据帧) import org.apache.spark.sql.types.{IntegerType,LongType} val cols=dataFrame.columns() //可变数据帧 var tmpDf=dataFr
import org.apache.spark.sql.types.{IntegerType,LongType}
val cols=dataFrame.columns()
//可变数据帧
var tmpDf=dataFrame
对于(col试试这个-
df.select(df.schema.map(s => if (s.dataType == LongType) col(s.name).cast(IntegerType) else col(s.name)): _*)
你能发布你的json格式样本吗?是的,我想它会创建一个很大的数据帧。一个问题请看这里的另一个答案-它应该在大数据集上工作得更好