0
嗨,我正在使用spark 1.6.3。我有一個rdd,裏面有一些BigInt scala類型。我將如何將其轉換爲火花數據框? 在創建數據框之前是否可以轉換類型?將包含BigInt的RDD轉換爲Spark Dataframe
我RDD:
Array[(BigInt, String, String, BigInt, BigInt, BigInt, BigInt, List[String])] = Array((14183197,Browse,3393626f-98e3-4973-8d38-6b2fb17454b5_27331247X28X6839X1506087469573,80161702,8702170626376335,59,527780275219,List(NavigationLevel, Session)), (14183197,Browse,3393626f-98e3-4973-8d38-6b2fb17454b5_27331247X28X6839X1506087469573,80161356,8702171157207449,72,527780278061,List(StartPlay, Action, Session)))
打印出來:
(14183197,Browse,3393626f-98e3-4973-8d38-6b2fb17454b5_27331247X28X6839X1506087469573,80161356,8702171157207449,72,527780278061,List(StartPlay, Action, Session))
(14183197,Browse,3393626f-98e3-4973-8d38-6b2fb17454b5_27331247X28X6839X1506087469573,80161702,8702170626376335,59,527780275219,List(NavigationLevel, Session))
我已經厭倦了創建一個模式對象;
val schema = StructType(Array(
StructField("trackId", LongType, true),
StructField("location", StringType, true),
StructField("listId", StringType, true),
StructField("videoId", LongType, true),
StructField("id", LongType, true),
StructField("sequence", LongType, true),
StructField("time", LongType, true),
StructField("type", ArrayType(StringType), true)
))
,如果我嘗試val df = sqlContext.createDataFrame(rdd, schema)
我得到這個錯誤
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 (org.apache.spark.rdd.RDD[(BigInt, String, String, BigInt, BigInt, BigInt, BigInt, scala.collection.immutable.List[String])], org.apache.spark.sql.types.StructType)
或者,如果我嘗試val df = sc.parallelize(rdd.toSeq).toDF
我碰到下面的錯誤;
error: value toSeq is not a member of org.apache.spark.rdd.RDD[(BigInt, String, String, BigInt, BigInt, BigInt, BigInt, List[String])]
任何幫助理解
感謝您的評論,我得到一個'java.lang.UnsupportedOperationException:類型爲scala.BigInt的模式錯誤 – ukbaz