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

在Spark SQL中传递参数

孟征
2023-03-14

我需要在Spark SQL中传递参数。例如,下面的查询是Val timestamp=spark。sql(“从表中选择时间戳”)现在,我有另一个查询要在where类Spark中传递这个时间戳。sql(s“从表B中选择col1,其中timestamp='$timestamp'”。

但是上面的查询返回不匹配的表达式错误。有人能提出解决方案吗

共有1个答案

黄毅
2023-03-14

在这种情况下,查询val时间戳=spark.sql("从tablea中选择时间戳")返回一个新的数据帧,它看起来像时间戳:org.apache.spark.sql.DataFrame=[time戳: bigint]。这就是为什么您不能将它传递到下一个选择查询中。

我至少可以找到两种解决这个问题的方法:

1) 使用连接:

spark.sql("从表a中选择a.col1,加入表ba.timestamp=b.timestamp")

2) 将时间戳数据帧转换为字符串:

val timestampString = "("+myTimestamp.collect.map(r => r(0)).mkString(",")+")"
spark.sql(s"select col1 from tableb where timestamp = $timestampString ")
 类似资料:
  • 问题内容: 请告知如何将参数传递给使用的函数。 我的例子是不正确的。 问题答案: 您需要创建一个匿名函数,以便不会立即执行实际函数。

  • 但是,当我试图将此代码更改为以下代码时,我得到了一个错误-错误:Main method,在类MyClass中找不到,请将Main method,定义为:public static void Main(string[]args)。我需要接收owner和consumerName作为我的程序的参数/输入。 ,这是怎么做到的?

  • 您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶): BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world")); 在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。 使用 了不起的 Newtonsof

  • 问题内容: 我已经按照此链接中所述的教程进行操作。在下面的代码中,由于某种原因,数据不会作为参数附加到url上,但是如果我使用它直接将其设置为url 则可以。 问题答案: 对于简单的情况,我建议您使用jQuery 的或语法: 如果您需要捕获失败案例,请执行以下操作: 此外,如果您始终发送JSON字符串,则可以在最后使用$ .getJSON 或$ .post以及另一个参数。

  • 问题内容: Docker 1.9允许将参数传递给dockerfile。参见链接:https : //docs.docker.com/engine/reference/builder/#arg 如何在docker-compose.yml中传递相同的参数? 如果可能,也请提供示例。 问题答案: 此功能已在Compose 1.6中添加。 参考:https : //docs.docker.com/comp

  • 有没有什么方法可以参数化我们传递的字符串以使用页面工厂创建页面对象? 前任: 我试图将字符串v推入@FindBy,但我得到了一个错误。 我正在获取注释属性FindBy的值。名称必须是常量表达式。