Apache spark 使用.as[A]强制架构不会';不要强制执行该类型
我试图在SQLServer中读取一个表,然后我想强制执行我所读取的内容的模式。所以我定义:Apache spark 使用.as[A]强制架构不会';不要强制执行该类型,apache-spark,apache-spark-dataset,Apache Spark,Apache Spark Dataset,我试图在SQLServer中读取一个表,然后我想强制执行我所读取的内容的模式。所以我定义: case class WhatIWant(FieldA:String,FieldB:String) 然后,我尝试从SQL server执行常规spark读取,我读取的数据帧类型为: input:org.apache.spark.sql.DataFrame FieldA:integer FieldB:String 然后,当我阅读时,我将附加为[WhatIWant],我认为这将使它成为一个数
case class WhatIWant(FieldA:String,FieldB:String)
然后,我尝试从SQL server执行常规spark读取,我读取的数据帧类型为:
input:org.apache.spark.sql.DataFrame
FieldA:integer
FieldB:String
然后,当我阅读时,我将附加为[WhatIWant]
,我认为这将使它成为一个数据集[WhatIWant]
,具有我定义的键入信息。事实证明,在笔记本中,它实际上会给我:
intput:org.apache.spark.sql.Dataset[WhatIWant]
FieldA:integer
FieldB:String
现在我对两件事感到困惑:
.as[]
是否会实际执行该模式“FieldA”的所有值都是null,我觉得这是其中的一部分,但我仍然感到困惑。从关系存储中读取遵循所需表的DDL中定义的模式。如果需要,可以将查询参数传递给SparkConf,并将SQL Server查询作为其值,Spark将在数据库上运行查询以获取结果。方法为[]只有在为Case类创建CustomEncoder并使其在运行命令将数据从SQL Server读取到DataFrameReading的文件中隐式可用时才会生效从关系存储读取遵循所需表的DDL中定义的模式。如果需要,可以将查询参数传递给SparkConf,并将SQL Server查询作为其值,Spark将在数据库上运行查询以获取结果。方法为[]只有在为Case类创建CustomEncoder并使其在运行命令的文件中隐式可用以将SQL Server中的数据读取到数据帧中时,此命令才会生效