当前位置: 首页 > 知识库问答 >
问题:

火花连接:括号问题

公宜春
2023-03-14

我要加入两个rdd。

示例文件1数据:

245216  123422,187,235,742,1635,5600,2782,52,140943

示例文件2数据:

281216  12433,308,454,27862,2693,4578,138812,567,20,716

下面是代码

rdd1 = sc.textFile("file1").map(_.split("\t")).map(line => (line(0), line(1)))
rdd2 = sc.textFile("file2").map(_.split("\t")).map(line => (line(0), line(1)))
val merged = rdd1.join(rdd2)    

o/p是k,(v),我想在做进一步处理时去掉值两边的括号。我尝试了一些事情,包括

val merged_no_paren = merged.map { case (k, (v)) => (k, v) }

我还保存了结果:

 merged_no_paren.map{case x=>s"${x._1}\t${x._2}"}.saveAsTextFile("merged")

不幸的是,结果总是以下格式:

100   (1,50,200)
120   (2,25,789)
....

我希望他们:

100   1,50,200
120   2,25,789

共有1个答案

勾安翔
2023-03-14

加入后您的RDD类型为RDD[(String,(String, String))]。如果您只是打印一个(String, String),它会打印带括号的内容。但是您可以将其拆开并以任何您喜欢的方式打印它。

scala> val s = Seq(("1", ("2", "3")))
s: Seq[(String, (String, String))] = List((1,(2,3)))

scala> for (e <- s) println(e)
(1,(2,3))

scala> for ((k, v) <- s) println(s"$k $v")
1 (2,3)

scala> for ((k, (v1, v2)) <- s) println(s"$k $v1,$v2")
1 2,3
 类似资料:
  • 我正在研究建立一个JDBC Spark连接,以便从r/Python使用。我知道和都是可用的,但它们似乎更适合交互式分析,特别是因为它们为用户保留了集群资源。我在考虑一些更类似于Tableau ODBC Spark connection的东西--一些更轻量级的东西(据我所知),用于支持简单的随机访问。虽然这似乎是可能的,而且有一些文档,但(对我来说)JDBC驱动程序的需求是什么并不清楚。 既然Hiv

  • 我有两个大的Hive表,我想用spark.sql将它们连接起来。表格采用snappy格式,在Hive中存储为拼花文件。 我想加入它们并对某些列进行一些聚合,假设计算所有行和一列的平均值(例如 doubleColumn),同时使用两个条件进行过滤(假设在 col1,col2 上)。 注意:我在一台机器上进行测试安装(虽然功能非常强大)。我希望集群中的性能可能会有所不同。 我的第一个尝试是使用spar

  • 问题内容: 有没有一种快速的方法可以使Eclipse将花括号放在代码块的下一行上(本身)? 问题答案: 对于预先编写的代码块,请先按照Don的建议进行设置,然后选择该代码段,然后右键单击SourceCode->Format,然后按照首选项中的设置进行格式化。

  • 我使用Spark2和neo4j3(安装在一个节点上),并使用这个spark/Neo4j https://github.com/neo4j-contrib/neo4j-spark-connector 我可以使用我的数据库。 多谢帮忙。

  • 我正试图设置一个小型Spark集群进行测试。该集群由3名工人和一名师傅组成。我在每个节点上设置了Java、scala和Spark。配置文件如下:spark-defaults.conf: Spark-env.sh

  • 我正在回顾一个旧的Spark软件,它必须并行运行许多小的查询和计数()并使用直接的hive-sql。 在过去,该软件通过在shell()上直线运行每个查询来解决“并行化查询的问题”。我不能用现代新鲜的Spark,此刻只有Spark V2.2。下面的片段说明了完整的SQL查询方法。 有一种“Spark方式”可以访问Hive并运行SQL查询,性能(略)更好,而且Spark配置的重用性更好? 没有丢失纯