在spark rdd println error中,如何呈现[ljava.lang.string@8e6606型

xzlaal3s  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(552)

我对apachespark有一个问题,使用scala。我正在尝试创建一个spark应用程序,它从用户输入打印rdd。输入数据如下:

  1. List("aaaa","aaaa","dfddf","aaaa","aaaa","dfddf","aaaa","aaaa","dfddf","aaaa","aaaa","dfddf","aaaa","aaaa","dfddf")

代码如下:

  1. val wSchemaString = "col1 col2 col3 col4";
  2. val wSchema = StructType(wSchemaString.split(" ").map(fieldName =>StructField(fieldName, StringType, true)));
  3. val wRow = sc.parallelize(wInput.map(_.split(",")));
  4. val wRowRDD = wRow.map(x=>{
  5. val wNum = wSchemaString.split(" ").size;
  6. var out = new Array[String](wNum+1);
  7. for(i <- 0 to wNum)
  8. {
  9. out(i) = x(i);
  10. }
  11. Row(out);
  12. });
  13. wRowRDD.collect.foreach(println);
  14. ...

结果如下:

  1. 27 [[Ljava.lang.String;@5f1ec010]
  2. 28 [[Ljava.lang.String;@5bd38b39]
  3. 29 [[Ljava.lang.String;@5d6b1c05]
  4. 30 [[Ljava.lang.String;@7ea6404c]
  5. 31 [[Ljava.lang.String;@75447fda]
  6. 32 [[Ljava.lang.String;@6425fd5b]
  7. 33 [[Ljava.lang.String;@7a1c94ba]
  8. 34 [[Ljava.lang.String;@6a687df7]
  9. 35 [[Ljava.lang.String;@722619b4]
  10. 36 [[Ljava.lang.String;@117d1979]
  11. 37 [[Ljava.lang.String;@304a45f4]
  12. 38 [[Ljava.lang.String;@5c36aef0]
  13. 39 [[Ljava.lang.String;@a173ddc]
  14. 40 [[Ljava.lang.String;@7bde3bb0]
  15. 41 [[Ljava.lang.String;@3b20df58]
  16. 42 [[Ljava.lang.String;@981f1f2

但是,我想要的是:

  1. "aaaa","aaaa","dfddf","aaaa"
  2. "aaaa","dfddf","aaaa","aaaa"
  3. "dfddf","aaaa","aaaa","dfddf"
  4. "aaaa","aaaa","dfddf","aaaa"
9udxz4iz

9udxz4iz1#

row是数组[any],因此prinln函数中生成的字符串是由数组的tostring方法生成的字符串。
要获得这些输出,必须执行以下操作:

  1. val wSchemaString = "col1 col2 col3 col4";
  2. val wSchema = StructType(wSchemaString.split(" ").map(fieldName =>StructField(fieldName, StringType, true)));
  3. val wRow = sc.parallelize(wInput.map(_.split(",")));
  4. val wRowRDD = wRow.map(x=>{
  5. val wNum = wSchemaString.split(" ").size;
  6. var out = new Array[String](wNum+1);
  7. for(i <- 0 to wNum)
  8. {
  9. out(i) = x(i);
  10. }
  11. Row(out);
  12. });
  13. wRowRDD.collect.foreach(row => println(row.mkString(",")));

我希望这些会有用

展开查看全部

相关问题