Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala lightbend配置:在application.properties文件中传递动态值_Scala_Apache Spark_Config_Typesafe Config - Fatal编程技术网

Scala lightbend配置:在application.properties文件中传递动态值

Scala lightbend配置:在application.properties文件中传递动态值,scala,apache-spark,config,typesafe-config,Scala,Apache Spark,Config,Typesafe Config,我在scala代码中使用,这样我的application.properties文件就远离了我的jar。我需要在application.properties文件中传递当前日期 Date_read_write = 20190828 如果我可以提到的是shell脚本,那么我如何使其动态拾取 Date_read_write=`date +%Y%m%d` 如何在application.properties文件中执行类似步骤 时间添加更新 下面是我的应用程序.properties文件: hdfs_li

我在scala代码中使用,这样我的
application.properties
文件就远离了我的jar。我需要在
application.properties
文件中传递当前日期

Date_read_write = 20190828 
如果我可以提到的是shell脚本,那么我如何使其动态拾取

Date_read_write=`date +%Y%m%d`
如何在
application.properties
文件中执行类似步骤

时间添加更新

下面是我的
应用程序.properties
文件:

hdfs_link = hdfs://XX.XXX.XXX.XX:8080/sessions/data/events
mediaKey = 1234
eventName = media
Date_read_write = 20190815
time = *_W
parts = *
date = ${DATE}
我使用上面的代码生成
hdfs://XX.XXX.XXX.XX:8080/sessions/data/events/1234/media/20190815/*_W/*

使用:

val conf = ConfigFactory.load() 
val hdfs_path = conf.getString("hdfs_link")+"/"+conf.getString("mediaKey")+"/"+conf.getString("eventName")+"/"+conf.getString("Date_read_write")+"/"+conf.getString("time")+"/"+conf.getString("parts")
但当我加上

--driver-java-options -DDate_read_write=`date --date='1 days ago' '+%Y%m%d'`
对于我的spark submit commad,我的URL指向
hdfs://XX.XXX.XXX.XX:8080/sessions/data/events/1234/media/20190828/*/*

我不知道为什么这个加法会改变时间的值

下面是我的spark submit命令:

nohup spark submit--主线程--部署模式客户端--num执行器 20--执行器内核6--驱动程序内存10g--执行器内存10g --class metrics.MasterAggregateTable--files application.properties--driver java options-Dconfig.file=application.properties--driver java options-DDate\u read\u write=`date+%Y%m%d`--jars com.datastax.spark\u spark-cassandra-connector\u 2.11-2.3.0.jar UserMetrics.jar&


<>你可以考虑使用一个环境变量。 只需在
应用程序中添加环境变量替换。属性
文件:

hdfs_link = hdfs://XX.XXX.XXX.XX:8080/sessions/data/events
mediaKey = 1234
eventName = media
Date_read_write = 20190815
time = *_W
parts = *
date = ${DATE}
然后,在运行应用程序时,只需设置
DATE
变量:

 DATE=`date +%Y%m%d` java -jar yourapp.ja

<>你可以考虑使用一个环境变量。 只需在
应用程序中添加环境变量替换。属性
文件:

hdfs_link = hdfs://XX.XXX.XXX.XX:8080/sessions/data/events
mediaKey = 1234
eventName = media
Date_read_write = 20190815
time = *_W
parts = *
date = ${DATE}
然后,在运行应用程序时,只需设置
DATE
变量:

 DATE=`date +%Y%m%d` java -jar yourapp.ja
您可以按系统属性在
application.properties

java -DDate_read_write=`date +%Y%m%d` -jar yourapp.jar
在库的默认使用中,精确匹配系统属性已覆盖相应的配置属性

这不需要对jar内的配置文件进行任何更改。

您可以在
应用程序.properties中按系统属性进行更改

java -DDate_read_write=`date +%Y%m%d` -jar yourapp.jar
在库的默认使用中,精确匹配系统属性已覆盖相应的配置属性


这不需要对jar中的配置文件进行任何更改。

这是可行的,但我有其他问题,因为这一点,它将我的下一个参数设置为
*
,而不是从配置文件中获取。我正在从配置文件生成一个hdfs url,所以我的下一个参数是
time
,所以在使用上述代码之前,它过去是
20190829/00
,现在变成
20190829/*
知道为什么会发生这种情况吗?我添加到spark submit命令中的所有内容都是
--驱动程序java选项-DDate\u read\u write=`date+%Y%m%d`
@toofrellik请更新您的问题,以包括如何定义
时间
。您还可以显示读取配置以生成URL的代码吗?我厌倦了使用各种选项,甚至尝试过创建bash变量并将其发送到spark submit命令,但当作业运行时,它仍会使时间变为
*
不知道为什么!这可能是另外一件事/愚蠢的事。你是否在某处重新定义了时间?尝试将名称更改为更长的名称,例如
时间\u读取\u写入
。还可以尝试将
*.\u W
放在双引号中。这是可行的,但我还有其他问题,因为它使我的下一个参数成为
*
,而不是从配置文件中获取。我正在从配置文件生成一个hdfs url,所以我的下一个参数是
time
,所以在使用上述代码之前,它过去是
20190829/00
,现在变成
20190829/*
知道为什么会发生这种情况吗?我添加到spark submit命令中的所有内容都是
--驱动程序java选项-DDate\u read\u write=`date+%Y%m%d`
@toofrellik请更新您的问题,以包括如何定义
时间
。您还可以显示读取配置以生成URL的代码吗?我厌倦了使用各种选项,甚至尝试过创建bash变量并将其发送到spark submit命令,但当作业运行时,它仍会使时间变为
*
不知道为什么!这可能是另外一件事/愚蠢的事。你是否在某处重新定义了时间?尝试将名称更改为更长的名称,例如
时间\u读取\u写入
。还可以尝试将
*\u W
放在双引号中。