首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala RDD[String] to RDD[String,String]

Scala RDD[String] to RDD[String,String]
EN

Stack Overflow用户
提问于 2016-10-08 09:08:07
回答 4查看 1.9K关注 0票数 1

我有一个包含以下数据的RDD[String]

数据格式:('Movie Name','Actress Name')

代码语言:javascript
复制
('Night of the Demons (2009)  (uncredited)', '"Steff", Stefanie Oxmann Mcgaha')
('The Bad Lieutenant: Port of Call - New Orleans (2009)  (uncredited)', '"Steff", Stefanie Oxmann Mcgaha') 
('"Please Like Me" (2013) {All You Can Eat (#1.4)}', '$haniqua') 
('"Please Like Me" (2013) {French Toast (#1.2)}', '$haniqua') 
('"Please Like Me" (2013) {Horrible Sandwiches (#1.6)}', '$haniqua')

我想把它转换成RDD[String,String],比如' '中的第一个元素将是我在RDD中的第一个字符串,' '中的第二个元素将是我在RDD中的第二个字符串。

我试过这个:

代码语言:javascript
复制
val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
val splitRdd = rdd1.map( line => line.split(",") )
splitRdd.foreach(println)

但它给了我一个错误,因为:

代码语言:javascript
复制
[Ljava.lang.String;@7741fb9
[Ljava.lang.String;@225f63a5
[Ljava.lang.String;@63640bc4
[Ljava.lang.String;@1354c1de
EN

回答 4

Stack Overflow用户

发布于 2016-10-08 14:11:44

[Ljava.lang.String;@7741fb9不是一个错误,这是当你尝试打印一个数组时打印出来的。

[ -一维数组

L -数组包含类或接口

java.lang.String -数组中对象的类型

@ -将字符串连接在一起

7741fb9对象的哈希码。

要打印String array,您可以尝试以下代码:

代码语言:javascript
复制
import scala.runtime.ScalaRunTime._
splitRdd.foreach(array => println(stringOf(array)))

Source

票数 5
EN

Stack Overflow用户

发布于 2016-10-08 21:35:09

这不是一个错误。我们也可以在这里使用flatMap()来避免混淆,

代码语言:javascript
复制
val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
rdd1.flatMap( line => line.split(",")).foreach(println)

在这里,映射的输入函数返回单个元素(数组),而flatMap返回一个元素列表(0或更多)。此外,flatMap的输出也是展平的。

票数 0
EN

Stack Overflow用户

发布于 2016-10-09 10:09:05

由于它是字段封闭和行封闭的csv文件,因此需要使用正则表达式读取文件。简单的拆分是行不通的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39927675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档