如何在Scala中将数据帧的单行转换为字符串?

时间:2018-07-28 09:30:15

标签: scala apache-spark

我的数据框是通过读取RDBMS表创建的,它只有一列,其中只有一个值:

val sourceCols = spark.read.format("jdbc").option("url", hiveMetaConURL)
                                               .option("dbtable", "(select source_columns from base.spe_tab where tablename='base.forecast') as sCols")
                                               .option("user", metaUserName)
                                               .option("password", metaPassword)
                                               .load()

我尝试通过以下方式将其转换为字符串:

val sourceColDataTypes = sourceCols.rdd.map(_.mkString(",")).collect.foreach(println)

当我尝试将其打印为:

sourceColDataTypes.foreach(println)

我没有看到内容,而是看到了:

[Ljava.lang.String;@1e489957

有没有一种方法可以使用Scala的yield获得值。 谁能让我知道如何将DataFrame中的行转换为String?

2 个答案:

答案 0 :(得分:1)

要获取该值,可以使用以下其中一项

sourceCols.map(_.getString(0)).collect.foreach(println)
sourceCols.map(_.toSeq.mkString(",")).collect.foreach(println)

如果您只想查看数据,可以使用

sourceCols.show(false)

如果您想要一个字符串,则可以作为

println(sourceCols.map(_.getString(0)).collect.mkString(","))

希望这会有所帮助!

答案 1 :(得分:0)

您可以直接在anon_send_exit(world_actor, exit_reason::user_shutdown)上尝试此操作,完全不需要像这样{@ {1}}隐蔽

dataframe

rdd