如何将rdd行转换为输入的rdd

拼图

是否可以将行RDD转换为类型化RDD。在下面的代码中,我可以将行JavaRDD转换为计数器类型JavaRDD

代码:

JavaRDD<Counter> rdd = sc.parallelize(counters);
Dataset<Counter> ds = sqlContext.createDataset(rdd.rdd(), encoder);

DataFrame df = ds.toDF();
df.show()

df.write().parquet(path);
DataFrame newDataDF = sqlContext.read().parquet(path);

newDataDF.toJavaRDD(); // This gives a row type rdd

比例尺:

case class A(countId: Long, bytes: Array[Byte], blist: List[B])
case class B(id: String, count: Long)

val b1 = B("a", 1L)
val b2 = B("b", 2L)

val a1 = A(1L, Array(1.toByte,2.toByte), List(a1, a2))
val rdd = sc.parallelize(List(a1))

val dataSet: Dataset[A] = sqlContext.createDataset(rdd)
val df = dataSet.toDF()

 // this shows, so this last entry is for List[B] in which it is storing string as null
 |1|[01 02]| [[null,3984726108...|]
 df.show

df.write.parquet(path)
val roundTripRDD = sqlContext.read.parquet(path).as[A].rdd

//throws error here when run show on df
Caused by: org.codehaus.commons.compiler.CompileException: File 'generated.java',
Line 300, Column 68: 
No applicable constructor/method found for actual parameters 
"long, byte[], scala.collection.Seq"; candidates are:
"test.data.A(long, byte[], scala.collection.immutable.List)"


roundTripRDD.toDF.show

assertEquals(roundTripRDD, rdd)

我需要为案例类提供某种构造函数吗?

用户名

尝试:

sqlContext.read().parquet(path).as(encoder).rdd().toJavaRDD();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spark:如何将RDD的Seq转换为RDD

如何将RDD [Row]转换为RDD [String]

如何将 case RDD 转换为 RDD [String]?

如何将CSV文件转换为RDD

如何将RDD [(String,Iterable [VertexId])]转换为DataFrame?

如何将地图转换为Spark的RDD

如何将基于案例类的RDD转换为DataFrame?

如何将spark DataFrame转换为RDD mllib LabeledPoints?

如何将SparkR DataFrame转换为RDD

如何将JSON的RDD转换为Dataframe?

如何将地图的RDD转换为数据框

Spark如何将RDD [JSONObject]转换为数据集

如何将Doubles数组转换为RDD [String]

Spark:如何将pairRdd的值转换为Rdd?

如何将spark rdd转换为numpy数组?

如何将 RDD[CassandraRow] 转换为 DataFrame?

如何将 .csv 文件转换为 RDD<Vector>?

如何将 Pandas DataFrame 的 rdd 转换为 Spark DataFrame

将数组(行)的RDD转换为行的RDD吗?

如何将RDD [(String,String)]转换为RDD [Array [String]]?

如何将Spark RDD [Array [MyObject]]转换为RDD [MyObject]

如何将 RDD[List[String]] 转换为 RDD[List[Float]]

如何将 DataFrame 转换为 RDD[Point] 而不是 RDD[ROW]?

如何在 PySpark 中将 RDD 列表转换为 RDD 行

Spark MLlib如何将org.apache.spark.rdd.RDD [Array [Double]]转换为Array [Double]

Apache Spark:如何将Spark DataFrame转换为RDD [(Type1,Type2,...)]类型的RDD?

将 Rdd 转换为列表

如何将spark SchemaRDD转换为我的案例类的RDD?

如何将PySpark管道rdd(元组内部的元组)转换为数据帧?