解决Spark Arrays.toString(Dataset.collect())报错

以前用java.util.Arrays.toString(Dataset.collect())的时候是可以输出的,不知为何,今天编译的时候报了错误:

[INFO] -------------------------------------------------------------
[ERROR] /var/lib/jenkins/workspace/streamer-dev/streamer/src/main/java/cn/superid/streamer/compute/RegularQuery.java:[134,60] no suitable method found for toString(java.lang.Object)
    method java.util.Arrays.toString(long[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to long[])
    method java.util.Arrays.toString(int[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to int[])
    method java.util.Arrays.toString(short[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to short[])
    method java.util.Arrays.toString(char[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to char[])
    method java.util.Arrays.toString(byte[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to byte[])
    method java.util.Arrays.toString(boolean[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to boolean[])
    method java.util.Arrays.toString(float[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to float[])
    method java.util.Arrays.toString(double[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to double[])
    method java.util.Arrays.toString(java.lang.Object[]) is not applicable
      (argument mismatch; java.lang.Object cannot be converted to java.lang.Object[])
[ERROR] /var/lib/jenkins/workspace/streamer-dev/streamer/src/main/java/cn/superid/streamer/compute/RegularQuery.java:[145,54] no suitable method found for toString(java.lang.Object)

相关的java代码如下:

Dataset<PageView> inTimeRange = getInTimeRange(pageSet, last, unit, offset);
Timestamp epoch = Timestamp.valueOf(unit.update(last, offset + 1));
System.out.println("inTimeRange.collect()="+ Arrays.toString(inTimeRange.collect()));

无奈之下,加了类型强制转换(强制转换成Object[]):

Dataset<PageView> inTimeRange = getInTimeRange(pageSet, last, unit, offset);
Timestamp epoch = Timestamp.valueOf(unit.update(last, offset + 1));
System.out.println("inTimeRange.collect()="+ Arrays.toString((Object[]) inTimeRange.collect()));

然后编译运行都没有问题了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章