Dev*_*evi 7 scala apache-spark
例如,
val columns=Array("column1", "column2", "column3")
val df=sc.parallelize(Seq(
(1,"example1", Seq(0,2,5)),
(2,"example2", Seq(1,20,5)))).toDF(columns)
Run Code Online (Sandbox Code Playgroud)
如何使用字符串数组设置列名?是否可以在toDF()中提及数据类型?
toDF()采用类型的重复参数String,因此您可以使用_*类型注释来传递序列:
val df=sc.parallelize(Seq(
(1,"example1", Seq(0,2,5)),
(2,"example2", Seq(1,20,5)))).toDF(columns: _*)
Run Code Online (Sandbox Code Playgroud)
有关重复参数的更多信息,请参阅Scala语言规范中的4.6.2节.
toDF()在Spark 文档中定义为:
def toDF(colNames: String*): DataFrame
Run Code Online (Sandbox Code Playgroud)
所以你需要把你的阵列的可变参数的描述也是这里。这意味着您需要执行以下操作:
val columns=Array("column1", "column2", "column3")
val df=sc.parallelize(Seq(
(1,"example1", Seq(0,2,5)),
(2,"example2", Seq(1,20,5)))).toDF(columns: _*)
Run Code Online (Sandbox Code Playgroud)
(添加: _* 到columnsin toDF)
val df=sc.parallelize(Seq(
(1,"example1", Seq(0,2,5)),
(2,"example2", Seq(1,20,5)))).toDF("column1", "column2", "column3")
Run Code Online (Sandbox Code Playgroud)
toDF()接受逗号分隔的字符串