Я использую этот код, чтобы получить данные из улья в Spark:Spark: Как изменить DataFrame к LibSVM и выполнять логистическую регрессию
val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val MyTab = hc.sql("select * from svm_file")
и я получаю DataFrame:
scala> MyTab.show()
+--------------------+
| line|
+--------------------+
|0 2072:1 8594:1 7...|
|0 8609:3 101617:1...|
| 0 7745:2|
|0 6696:2 9568:21 ...|
|0 200076:1 200065...|
|0 400026:20 6936:...|
|0 7793:2 9221:7 1...|
|0 4831:1 400026:1...|
|0 400011:1 400026...|
|0 200072:1 6936:1...|
|0 200065:29 4831:...|
|1 400026:20 3632:...|
|0 400026:19 6936:...|
|0 190004:1 9041:2...|
|0 190005:1 100120...|
|0 400026:21 6936:...|
|0 190004:1 3116:3...|
|0 1590:12 8594:56...|
|0 3632:2 9240:1 4...|
|1 400011:1 400026...|
+--------------------+
only showing top 20 rows
Как я могу преобразовать этот DataFrame в libSVM для выполнения логистической регрессии, как в этом примере: https://altiscale.zendesk.com/hc/en-us/articles/202627136-Spark-Shell-Examples?
Работает отлично, но можете ли вы рассказать мне, как я могу преобразовать его в «LabeledPoint»? Я пытаюсь с этим кодом: 'MyTabSVM.map (x => LabeledPoint (x._1, Vectors.sparse (?, X._2, x._3)))' , но я не уверен, что мне делать положить для аргумента '?'. – Maju116
'MyTabSVM.map (_._ 2.max) .max + 1' – zero323
Когда я пытаюсь запустить модель, я получаю следующую ошибку: ' org.apache.spark.SparkException: Работа прерывается из-за отказа этапа: Задача 0 на этапе 6.0 не удалась 4 раза, последний сбой: потерянная задача 0.3 в стадии 6.0 (TID 31, hdfs-58.hadoop.srv): java.lang.IllegalArgumentException: требование не выполнено: индексы должны быть однонаправленными и возрастающими order'. Он появляется, когда я хочу распечатать данные. Есть идеи? – Maju116