Где DDF в Spark-shell, как использовать с Vector, Seq или другими? - PullRequest
0 голосов
/ 09 октября 2019

Я пробую некоторые базовые типы данных,

val x = Vector("John Smith", 10, "Illinois")
val x = Seq("John Smith", 10, "Illinois")
val x = Array("John Smith", 10, "Illinois")
val x = ...
val x = Seq( Vector("John Smith",10,"Illinois"), Vector("Foo",2,"Bar"))

, но никто не предлагает toDF(), даже после import spark.implicits._.

Моя цель - использовать Someting как x.toDF("name","age","city").show

В последнем примере toDF существует, но ошибка "java.lang.ClassNotFoundException" .


ПРИМЕЧАНИЯ:

  • Я использую Spark-shell с Spark v2.2.

  • Нужно общее преобразование на основе имен столбцов, параметризованных в toDF(names), , а не сложных решенияхкак создать Вектор case class Person(name: String, age: Long, city: String)

Ожидаемый результат показа после toDF равен

+----------+---+--------+
|      name|age|    city|
+----------+---+--------+
|John Smith| 10|Illinois|
+----------+---+--------+

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Вы должны поместить значения в кортеж, чтобы создать 3 столбца

scala> Seq(("John Smith", "asd", "Illinois")).toDF("name","age","city").show
+----------+---+--------+
|      name|age|    city|
+----------+---+--------+
|John Smith|asd|Illinois|
+----------+---+--------+
0 голосов
/ 09 октября 2019

Синтаксис, который вы ищете:

val x = Array("John Smith", "10", "Illinois")
sc.parallelize(x).toDF()

Другой способ,

val y = Seq("John Smith", "10", "Illinois")
Seq(y).toDF("value").show()

И это тоже должно работать.

Seq(Vector("John Smith","10","Illinois"), Vector("Foo","2","Bar")).toDF()
...