Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 将向量集合转换为数据帧时出现架构错误_Scala_Apache Spark - Fatal编程技术网

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))

我希望有帮助

谢谢你的澄清。这完全有道理。谢谢你的澄清。这完全有道理。