Scala 数组或saveAsTextFile的火花打印结果
我已经被这件事困扰了好几个小时了。。。尝试收集和mkString,但仍然无法在控制台中打印或另存为文本文件Scala 数组或saveAsTextFile的火花打印结果,scala,apache-spark,Scala,Apache Spark,我已经被这件事困扰了好几个小时了。。。尝试收集和mkString,但仍然无法在控制台中打印或另存为文本文件 scala> val au1 = sc.parallelize(List(("a",Array(1,2)),("b",Array(1,2)))) scala> val au2 = sc.parallelize(List(("a",Array(3)),("b",Array(2)))) scala> val au3 = au1.union(au2) 联盟的结果是 Array
scala> val au1 = sc.parallelize(List(("a",Array(1,2)),("b",Array(1,2))))
scala> val au2 = sc.parallelize(List(("a",Array(3)),("b",Array(2))))
scala> val au3 = au1.union(au2)
联盟的结果是
Array[(String,Array[int])] = Array((a,Array(1,2)),(b,Array(1,2)),(a,Array(3)),(b,Array(2)))
当我执行x0和x1时,所有的打印尝试都会产生以下结果
Array[Int]) does not take parameters
最后一次尝试,在之后执行,导致索引错误
scala> val au4 = au3.map(x => (x._1, x._2._1._1, x._2._1._2))
<console>:33: error: value _1 is not a member of Array[Int]
val au4 = au3.map(x => (x._1, x._2._1._1, x._2._1._2))
._1或._2可以在元组中完成,而不是在数组中完成
a、 Array1,2是一个元组,所以1是a,而2是Array1,2
所以,如果你想得到一个数组的元素,你需要使用x.。20
但是au2阵列只有一个元素,所以x._21适用于au1,而不适用于au2。您可以使用选项或按以下方式尝试
._1或._2可以在元组中完成,而不是在数组中完成
a、 Array1,2是一个元组,所以1是a,而2是Array1,2
所以,如果你想得到一个数组的元素,你需要使用x.。20
但是au2阵列只有一个元素,所以x._21适用于au1,而不适用于au2。您可以使用选项或按以下方式尝试
au3的结果不是Array[String,Array[int]],而是RDD[String,Array[int]]
这就是在文件中写入输出的方法
au3.map( r => (r._1, r._2.map(_.toString).mkString(",")))
.saveAsTextFile("data/result")
您需要映射整个数组并从中创建一个字符串,以便可以将其作为
(a,1:2)
(b,1:2)
(a,3)
(b,2)
您可以像下面那样在不带括号的情况下写入文件
au3.map( r => Row(r._1, r._2.map(_.toString).mkString(":")).mkString(","))
.saveAsTextFile("data/result")
输出:
a,1:2
b,1:2
a,3
b,2
值为逗号,分隔,数组值分隔为:
希望这有帮助 au3的结果不是Array[String,Array[int]],而是RDD[String,Array[int]]
这就是在文件中写入输出的方法
au3.map( r => (r._1, r._2.map(_.toString).mkString(",")))
.saveAsTextFile("data/result")
您需要映射整个数组并从中创建一个字符串,以便可以将其作为
(a,1:2)
(b,1:2)
(a,3)
(b,2)
您可以像下面那样在不带括号的情况下写入文件
au3.map( r => Row(r._1, r._2.map(_.toString).mkString(":")).mkString(","))
.saveAsTextFile("data/result")
输出:
a,1:2
b,1:2
a,3
b,2
值为逗号,分隔,数组值分隔为:
希望这有帮助 我试着跟随E01,Sophia,50000,Sebastian,因此。你的问题表明第二个参数是数组。但你的评论表明这是一个元组。我很困惑:请更新哪个是正确的。我对元组和数组感到困惑。。。这两个答案都消除了混淆。元组类似于数组,但可以在其中存储多个数据类型,但数组只能存储一个数据类型。我在回答中解释了从元组和数组中提取元素的区别:我的理解完全相反。这就是当你喝咖啡而睡眠不足时会发生的情况。我试图跟踪E01,Sophia,50000,Sebastian,因此。你的问题表明第二个参数是数组。但你的评论表明这是一个元组。我很困惑:请更新哪个是正确的。我对元组和数组感到困惑。。。这两个答案都消除了混淆。元组类似于数组,但可以在其中存储多个数据类型,但数组只能存储一个数据类型。我在回答中解释了从元组和数组中提取元素的区别:我的理解完全相反。这就是当你喝咖啡而睡眠不足时会发生的情况。我正在研究另一个问题的解决方案,现在有一个问题,au3.map r=>Rowr中的行是什么。_1,r._2.mapRow是spark中的数据集合,类似于scala中的tuple,它表示数据库行中的一行。此行集合称为dataframeHmmm,在我的VM中,它不是有效语法。下班后我会再调查一下。你导入了org.apache.spark.sql.Row吗?没有。我是大数据世界的新手,每天都在学习!我正在研究另一个问题的解决方案,现在有一个问题,au3.map r=>Rowr中的行是什么。_1,r._2.mapRow是spark中的数据集合,类似于scala中的元组,它表示数据库行中的单行。此行集合称为dataframeHmmm,在我的VM中,它不是有效语法。下班后我会再调查一下。你导入了org.apache.spark.sql.Row吗?没有。我是大数据世界的新手,每天都在学习!