Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 数组或saveAsTextFile的火花打印结果_Scala_Apache Spark - Fatal编程技术网

Scala 数组或saveAsTextFile的火花打印结果

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

我已经被这件事困扰了好几个小时了。。。尝试收集和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[(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吗?没有。我是大数据世界的新手,每天都在学习!