在Spark Shell中运行脚本时避免打印代码

Joh*_*yun 2 scala apache-spark

我试图使用scala文件中的脚本从spark shell中连接到DB。当连接脚本从其他位置获取密码时,它会在spark shell控制台中打印。我只是想避免这些。

Scala中的代码如下所示,

val config=Map("driver"->"drivername","url"->"dburl","user"->"username","password"->"741852963");
Run Code Online (Sandbox Code Playgroud)

在Spark Shell中加载此代码时,这也会在Spark Shell中打印代码。我希望这些单独的部分不要在Spark Console中打印。

我该如何实现?

rlu*_*uta 6

您有几种方法可以实现此目的:

  • 您可以将配置定义包装在一个对象中。Spark Shell将仅输出已定义对象
scala> object ConfigHolder {
     | val config=Map("secret"->"value")
     | }
defined object ConfigHolder
Run Code Online (Sandbox Code Playgroud)

然后,您可以简单地引用您的配置,ConfigHolder.config而不是config

  • 您可以使用以下:silent命令在外壳中禁用/重新启用输出打印
scala> :silent

scala> val config=Map("secret"->"value")

scala> :silent
Run Code Online (Sandbox Code Playgroud)

当然,这些操作都不会阻止任何有权访问spark外壳的人读取您的凭据,而只是阻止临时围观者看到它们。