2016-07-28 6 views
0

Ich versuche, Topic-Modellierung auf den Wikipedia-Daten mit dem Funken LDA-Algorithmus: Die Eingabedatei ist im Grunde eine große bz2-Datei mit vielen XML-Dateien. ich auf der Funke Webseite des Grundfunken scala Code verwenden:Spark Scala nicht in der Lage, Wikipedia-Daten zu analysieren: enwiki_latest_articles xml bz2

val sc:SparkContext = new SparkContext(conf); 
val ssqlc:SQLContext = new org.apache.spark.sql.SQLContext(sc); 
val shsqlc:HiveContext = new org.apache.spark.sql.hive.HiveContext(sc); 

// Load and parse the data 

val data = sc.textFile("/user/enwiki-latest-pages-articles.xml.bz2") 

//val datanew = data.mapPartitionsWithIndex { (idx, iter) => if (idx == 0) iter.drop(1) else iter } 



val parsedData = data.map(s => Vectors.dense(s.trim.split(' ').map(_.toDouble))) 
    // Index documents with unique IDs 
    val corpus = parsedData.zipWithIndex.map(_.swap).cache() 
// Cluster the documents into three topics using LDA 
val ldaModel = new LDA().setK(25).run(corpus) 

// Output topics. Each is a distribution over words (matching word count vectors) 
println("Learned topics (as distributions over vocab of " + ldaModel.vocabSize + " words):") 
val topics = ldaModel.topicsMatrix 
for (topic <- Range(0, 25)) { 
    print("Topic " + topic + ":") 
    for (word <- Range(0, ldaModel.vocabSize)) { print(" " + topics(word, topic)); } 
    println() 
// val newtopics = ldaModel.describeTopics(5).foreach(println) 



} 

es die Daten und Fehler wie wirft verarbeiten tut:

ERROR executor.Executor: 0.0 Exception in Aufgabe 5.0 in Stufe (TID 2) java.lang.NumberFormatException: leer String 16/07/28 09:24:35 ERROR executor.Executor: Ausnahme in Aufgabe 10.0 in Stufe 0.0 (TID 5) java.lang.NumberFormatException: Für Eingabezeichenfolge : "|" 16/07/28 09.24.35 ERROR executor.Executor: Ausnahme in Aufgabe 7.0 in der Stufe 0.0 (TID 3) java.lang.NumberFormatException: Für die Eingabe-Stichwort: "|}"

Kann jemand Bitte hilf mir dabei? Ein kurzer Code, um dies zu verbessern, wird helfen. Vielen Dank im Voraus.

Antwort

0

Sie haben das Problem, dass Ihre Daten Zeichenfolgen enthalten, die keine Zahlen sind. Daher ist diese versagt:

s.trim.split(' ').map(_.toDouble) 

Sie müssen Ihre Daten aufzuräumen oder extrahieren nur die numerischen Felder Sie interessiert sind

+0

Sie sind eine Reihe von XML-Dateien, und ich bin ziemlich neu in scala zu sein. in der Lage, eine Reihe von XML-Datei zu ändern, die in einer bz2-Datei zu einem Wort zählen Vektoren, die ein Korpus von Dokumenten, Haben Sie irgendwelche Eingaben dazu ?? – user2122466

+0

@ user2122466 Zeigen Sie einige Bemühungen. Neu sein ist keine Entschuldigung dafür, es nicht zu versuchen. – Dikei

Verwandte Themen