Spark中调用RDD.take()后如何获取数组类型返回值?
问题解答
首先明确:take()方法本身返回的就是数组/列表类型(Scala中为Array[T],Python中为原生list),你看到getClass()返回String是因为误操作了——大概率是你对数组的字符串表示调用了类型检查,而非数组本身。
正确获取数组类型返回值的方式
Scala 场景:
直接接收take()的返回值,它本身就是Array类型:val resultArray: Array[String] = base_rdd.take(10) println(resultArray.getClass) // 输出 class [Ljava.lang.String;(表示String数组类型)如果你之前写的是
resultArray.toString.getClass,那得到的自然是String类型,这是错误的用法。Python 场景:
take()返回的是Python原生列表,直接赋值即可拿到数组类型:result_list = base_rdd.take(10) print(type(result_list)) # 输出 <class 'list'>同理,若你先把列表转为字符串(比如
str(result_list))再查类型,得到的只会是str类型。
关键注意点
- 不要将
take()的返回值先转为字符串再操作,直接使用返回的数组/列表对象即可。 - 验证类型时,直接对
take()的返回结果调用getClass()(Scala)或type()(Python),而非对其字符串表示调用。
内容的提问来源于stack exchange,提问作者tanmay saxena
相关产品推荐
相关产品推荐

