Как создать DataFrame: количество столбцов не совпадает - PullRequest
0 голосов
/ 02 октября 2018

Я получаю сообщение об ошибке:

java.lang.IllegalArgumentException: требование не выполнено: количество столбцов не совпадает.Старые имена столбцов (4): _1, _2, _3, _4 Новые имена столбцов (1): 'srcId', 'srcLabel', 'dstId', 'dstLabel'

в этом коде:

val columnNames = """'srcId', 'srcLabel', 'dstId', 'dstLabel'"""

import spark.sqlContext.implicits._

var df = Seq.empty[(String, String, String, String)]
  .toDF(columnNames)

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Проблема с вашим подходом заключается в том, что columnNames является строкой, в то время как вы определили tuple4 пустых строк.Таким образом, вам придется разбить columnNames строку на четыре строки и перейти к toDF

. Правильный способ сделать это следующим образом

val columnNames = """'srcId', 'srcLabel', 'dstId', 'dstLabel'"""

var df = Seq.empty[(String, String, String, String)]
  .toDF(columnNames.split(","): _*)

, которыйдолжен дать вам пустой фрейм данных как

+-------+-----------+--------+-----------+
|'srcId'| 'srcLabel'| 'dstId'| 'dstLabel'|
+-------+-----------+--------+-----------+
+-------+-----------+--------+-----------+

Надеюсь, ответ полезен

0 голосов
/ 02 октября 2018
scala> val columnNames = Seq("srcId", "srcLabel", "dstId", "dstLabel")
columnNames: Seq[String] = List(srcId, srcLabel, dstId, dstLabel)

scala> var d = Seq.empty[(String, String, String, String)].toDF(columnNames: _*)
d: org.apache.spark.sql.DataFrame = [srcId: string, srcLabel: string ... 2 more fields]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...