如何使用字符串数组在spark数据帧中将列名设置为toDF()函数?

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()中提及数据类型?

Tza*_*har 8

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()中指定数据类型和列? (2认同)

sha*_*dzy 6

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


ans*_*hed 5

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()接受逗号分隔的字符串