Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在scala spark数据帧中将模式的数据类型转换为另一种数据类型_Scala_Apache Spark - Fatal编程技术网

如何在scala spark数据帧中将模式的数据类型转换为另一种数据类型

如何在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

我有一个数据帧,在这个数据帧中,我在模式中使用LongType而不是IntegerType,数据帧以json格式存储。如何将所有LongType列转换为IntegerType。

如果是一个小数据帧,您可以简单地强制转换所有列: (对于大型数据集不建议这样做,因为它使用可变数据帧)

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格式样本吗?是的,我想它会创建一个很大的数据帧。一个问题请看这里的另一个答案-它应该在大数据集上工作得更好