【问题标题】:Spark-Scala: Get Dataframe Variable by concatenating two String VariablesSpark-Scala:通过连接两个字符串变量来获取数据帧变量
【发布时间】:2020-04-06 09:25:26
【问题描述】:

我有一个场景,我需要从两个字符串变量形成一个数据框名称。这很容易,可以通过连接来完成。

示例:“df_”+“part1324”

上面的代码将返回一个字符串变量。我希望这是一个 Dataframe 变量,通过它我可以对数据框执行进一步的操作。

【问题讨论】:

  • 如果代码支持问题就好了,已经试过了。

标签: scala apache-spark apache-spark-sql


【解决方案1】:

Map 可用于为 DataFrames 分配名称:

val df = List(("df_value")).toDF()
val stringVariable = "part1324"

// assign name to dataframe
val namedDataFrames = Map("df_" + stringVariable -> df)

// get dataframe by name
namedDataFrames("df_part1324").show(false)

【讨论】:

  • 虽然,我真的很想知道内存使用情况。假设我有很多数据框。每个都有数百万的记录。保存所有这些 Dataframe 变量的 Map 变量将如何影响内存使用(如果有)?
  • Map 将只包含指向 DataFrames 的指针,而不包含 DataFrames 数据;意味着,地图内存使用会非常小。
【解决方案2】:

您的问题令人困惑。数据框变量是什么意思?连接两个字符串将始终返回 String。为了创建数据框,您需要应用可用的不同方法来创建数据框。

val df:Dataframe 不能等于 df_part1234 (String) 根据您的示例,但要将其用作数据框,您需要执行以下操作

val df_part1234 = sc.range(1000).toDF("number") 其中 sc 是您的 Sparksession 变量。

如果你需要动态生成这个变量,把它放在像Loop这样的变量生成逻辑下,并添加创建数据框的语句。

如果您尝试实现其他目标(以及重现问题的代码 sn-p)请重写您的问题,或者如果您清楚问题,请接受答案

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多