2017-09-01 2 views
0

Je vais avoir un problème avec cette partie du code Spark MLlib des docs (https://spark.apache.org/docs/latest/ml-collaborative-filtering.html), en utilisant csv ou txt:Comment configurer encodeur pour jeu de données Spark lors de l'importation fichier csv ou txt

val ratings = 
spark.read.textFile("data/mllib/als/sample_movielens_ratings.txt") 
    .map(parseRating) 
    .toDF() 

Je reçois l'erreur suivante:

Erreur: (31, 11) Impossible de trouver le codeur pour le type stocké dans un jeu de données. Les types primitifs (Int, String, etc.) et les types de produits (classes de cas) sont pris en charge par l'importation de spark.implicits._ La prise en charge de la sérialisation d'autres types sera ajoutée dans les versions ultérieures.

.map(parseRating) 
    ^

J'ai aussi ce qui suit au début de mon objet:

val conf = new 
SparkConf().setMaster("local[*]").set("spark.executor.memory", "2g") 
val spark = 
SparkSession.builder.appName("Mlibreco").config(conf).getOrCreate() 
import spark.implicits._ 

Il semble que la méthode read.textFile a besoin d'un codeur. J'ai trouvé quelques articles sur la façon de régler l'encodeur. Cependant, je ne sais pas comment l'implémenter lors de l'importation du fichier csv ou txt. Étant donné que rien dans les docs n'est mentionné à propos des encodeurs, il est très probable que j'ai manqué quelque chose d'évident.

Répondre

0

Essayez cette

val sparkSession: SparkSession = *** 
import sparkSession.implicits._ 
val dataset = sparkSession.createDataset(dataList) 

et voir ce lien pour trouver un du codeur prédéfini. Here