Rah*_*rma 6 java apache-spark apache-spark-sql
我无法弄清楚编码器从 RDD 下面创建数据集的正确实现?
例如
JavaRDD<Integer[]>rdd= sparkContext.parallelize(
Arrays.asList(new Integer[][]{new Integer[]{1,2},
new Integer[]{3,4}
,new Integer[]{6,7}}));
Run Code Online (Sandbox Code Playgroud)
以下实施失败-
DataSet<Integer> ds = sqlContext.createDataset(rdd.rdd(),Encoders.bean(Integer[].class));
Run Code Online (Sandbox Code Playgroud)
线程“main”中的异常 java.lang.AssertionError: assertion failed at scala.Predef$.assert(Predef.scala:165) at org.apache.spark.sql.catalyst.encoders.ExpressionEncoder$.javaBean(ExpressionEncoder.scala: 90) 在 org.apache.spark.sql.Encoders$.bean(Encoders.scala:142) 在 org.apache.spark.sql.Encoders.bean(Encoders.scala)
如何为数组类型创建编码?谢谢!
ak1*_*k17 -1
请尝试先将其转换为 DataFrame,然后再转换为 Dataset
Dataset<Integer[]> dataFrame = sqlContext.createDataFrame(rdd, Integer[].class);
Dataset<Integer[]> ds = dataFrame.as(Encoders.bean(Integer[].class));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |