我有一个包含以下数据的RDD[String]:
数据格式:('Movie Name','Actress Name')
('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中的第二个字符串。
我试过这个:
val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
val splitRdd = rdd1.map( line => line.split(",") )
splitRdd.foreach(println)但它给了我一个错误,因为:
[Ljava.lang.String;@7741fb9
[Ljava.lang.String;@225f63a5
[Ljava.lang.String;@63640bc4
[Ljava.lang.String;@1354c1de发布于 2016-10-08 14:11:44
[Ljava.lang.String;@7741fb9不是一个错误,这是当你尝试打印一个数组时打印出来的。
[ -一维数组
L -数组包含类或接口
java.lang.String -数组中对象的类型
@ -将字符串连接在一起
7741fb9对象的哈希码。
要打印
String array,您可以尝试以下代码:
import scala.runtime.ScalaRunTime._
splitRdd.foreach(array => println(stringOf(array)))发布于 2016-10-08 21:35:09
这不是一个错误。我们也可以在这里使用flatMap()来避免混淆,
val rdd1 = sc.textFile("/home/user1/Documents/TestingScala/actress"
rdd1.flatMap( line => line.split(",")).foreach(println)在这里,映射的输入函数返回单个元素(数组),而flatMap返回一个元素列表(0或更多)。此外,flatMap的输出也是展平的。
发布于 2016-10-09 10:09:05
由于它是字段封闭和行封闭的csv文件,因此需要使用正则表达式读取文件。简单的拆分是行不通的。
https://stackoverflow.com/questions/39927675
复制相似问题