0

ich einige sql.Row Objekte, die ich zu einem DataFrame in Spark-1.6.x konvertieren möchtenscala.collection.immutable.Iterable [org.apache.spark.sql.Row], um Datenrahmen? Fehler: überladene Methode Wert createDataFrame mit Alternativen

Meine Zeilen wie folgt aussehen:

events: scala.collection.immutable.Iterable[org.apache.spark.sql.Row] = List([14183197,Browse,80161702,8702170626376335,59,527780275219,List(NavigationLevel, Session)], [14183197,Browse,80161356,8702171157207449,72,527780278061,List(StartPlay, Action, Session)]) 

ausgedruckt:

events.foreach(println) 
[14183197,Browse,80161702,8702170626376335,59,527780275219,List(NavigationLevel, Session)] 
[14183197,Browse,80161356,8702171157207449,72,527780278061,List(StartPlay, Action, Session)] 

Also habe ich ein Schema für die Daten;

val schema = StructType(Array(
    StructField("trackId", IntegerType, true), 
    StructField("location", StringType, true), 
    StructField("videoId", IntegerType, true), 
    StructField("id", StringType, true), 
    StructField("sequence", IntegerType, true), 
    StructField("time", StringType, true), 
    StructField("type", ArrayType(StringType), true) 
)) 

Und dann ich das schaffen versuchen, die DataFrame von:

val df = sqlContext.createDataFrame(events, schema)

Aber ich bekomme die folgende Fehlermeldung;

error: overloaded method value createDataFrame with alternatives: 
    (data: java.util.List[_],beanClass: Class[_])org.apache.spark.sql.DataFrame <and> 
    (rdd: org.apache.spark.api.java.JavaRDD[_],beanClass: Class[_])org.apache.spark.sql.DataFrame <and> 
    (rdd: org.apache.spark.rdd.RDD[_],beanClass: Class[_])org.apache.spark.sql.DataFrame <and> 
    (rows: java.util.List[org.apache.spark.sql.Row],schema: org.apache.spark.sql.types.StructType)org.apache.spark.sql.DataFrame <and> 
    (rowRDD: org.apache.spark.api.java.JavaRDD[org.apache.spark.sql.Row],schema: org.apache.spark.sql.types.StructType)org.apache.spark.sql.DataFrame <and> 
    (rowRDD: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row],schema: org.apache.spark.sql.types.StructType)org.apache.spark.sql.DataFrame 
cannot be applied to (scala.collection.immutable.Iterable[org.apache.spark.sql.Row], org.apache.spark.sql.types.StructType) 

ich nicht sicher, warum ich dies zu umgehen, ist es, weil die zugrunde liegenden Daten in den keine Typinformation?

Jede Hilfe ist sehr geschätzt

Antwort

0

Sie müssen parallelize:

val sc: SparkContext = ??? 
val df = sqlContext.createDataFrame(sc.parallelize(events), schema) 
+0

Dank, jedoch bekomme ich einige Casting Fehler 'java.lang.ClassCastException: scala.math.BigInt kann nicht auf Java gegossen werden. lang.Integer', nicht sicher warum, wie ich nirgendwo Typen erklärt habe – ukbaz

Verwandte Themen