Scala 将向量集合转换为数据帧时出现架构错误
我有一个名为Scala 将向量集合转换为数据帧时出现架构错误,scala,apache-spark,Scala,Apache Spark,我有一个名为values的向量集合,我正试图将其转换为数据帧 scala.collection.immutable.Vector[(String, Double)] = Vector((1,1.0), (2,2.4), (3,3.7), (4,5.0), (5,4.9)) 我定义了一个自定义模式,如下所示,并尝试进行转换 val customSchema = new StructType() .add("A", IntegerType, true) .add("B", Doub
values
的向量集合,我正试图将其转换为数据帧
scala.collection.immutable.Vector[(String, Double)] = Vector((1,1.0), (2,2.4), (3,3.7), (4,5.0), (5,4.9))
我定义了一个自定义模式,如下所示,并尝试进行转换
val customSchema = new StructType()
.add("A", IntegerType, true)
.add("B", DoubleType, true)
val df = values.toDF.schema(customSchema)
这给了我一个错误的说法
error: overloaded method value apply with alternatives:
(fieldIndex: Int)org.apache.spark.sql.types.StructField <and>
(names: Set[String])org.apache.spark.sql.types.StructType <and>
(name: String)org.apache.spark.sql.types.StructField
cannot be applied to (org.apache.spark.sql.types.StructType)
错误:重载的方法值应用于替代项:
(fieldIndex:Int)org.apache.spark.sql.types.StructField以及创建架构的。但是,所有方法都会产生相同的自定义模式,customSchema:org.apache.spark.sql.types.StructType=StructType(StructField(A,IntegerType,true),StructField(B,DoubleType,true))
toDF
方法在没有自定义模式的情况下运行良好。但是,我想强制使用自定义模式。有人能告诉我我做错了什么吗?schema
是一个属性。当您想要获取DataFrame
或Dataset
的StructType
时,应该使用schema
val df = values.toDF
df.schema
//prints
StructType(StructField(_1,IntegerType,false), StructField(_2,DoubleType,false))
要将向量转换为数据帧
或数据集
,可以使用或spark.createDataset
。这些方法是重载的,它们需要RDD
或JavaRDD
或java.util.List
或行
和模式信息。您可以执行以下操作将向量
转换为数据帧
:
val df = spark.createDataFrame(vec.toDF.rdd, customSchema)
df.schema
//prints
StructType(StructField(A,IntegerType,true), StructField(B,DoubleType,true))
我希望有帮助 schema
是一个属性。当您想要获取DataFrame
或Dataset
的StructType
时,应该使用schema
val df = values.toDF
df.schema
//prints
StructType(StructField(_1,IntegerType,false), StructField(_2,DoubleType,false))
要将向量转换为数据帧
或数据集
,可以使用或spark.createDataset
。这些方法是重载的,它们需要RDD
或JavaRDD
或java.util.List
或行
和模式信息。您可以执行以下操作将向量
转换为数据帧
:
val df = spark.createDataFrame(vec.toDF.rdd, customSchema)
df.schema
//prints
StructType(StructField(A,IntegerType,true), StructField(B,DoubleType,true))
我希望有帮助 谢谢你的澄清。这完全有道理。谢谢你的澄清。这完全有道理。