小编nir*_*nir的帖子

Spring Boot和多个外部配置文件

我有多个属性文件,我想从类路径加载.有一个默认设置/src/main/resources属于myapp.jar.我springcontext希望文件在类路径上.即

<util:properties id="Job1Props"
    location="classpath:job1.properties"></util:properties>

<util:properties id="Job2Props"
    location="classpath:job2.properties"></util:properties>
Run Code Online (Sandbox Code Playgroud)

我还需要使用外部集覆盖这些属性的选项.我有一个外部配置文件夹cwd.根据spring boot doc配置文件夹应该在classpath上.但是从doc中不清楚它是否只会覆盖applicaiton.propertiesconfig中的那个或所有属性.

当我测试它时,只会application.properties被拾取,其余的属性仍然从中获取/src/main/resources.我已经尝试将它们作为逗号分隔列表提供给spring.config.location但是默认设置仍然没有被覆盖.

如何使多个外部配置文件覆盖默认配置文件?

作为我目前使用的解决方法app.config.location(app特定属性),我通过命令行提供.即

java -jar myapp.jar app.config.location=file:./config
Run Code Online (Sandbox Code Playgroud)

然后我改变applicationcontext

<util:properties id="Job2Props"
    location="{app.config.location}/job2.properties"></util:properties>
Run Code Online (Sandbox Code Playgroud)

这就是我在加载Application时在文件和类路径之间进行分离的方法.
EDITS:

//psuedo code

if (StringUtils.isBlank(app.config.location)) {
            System.setProperty(APP_CONFIG_LOCATION, "classpath:");
}
Run Code Online (Sandbox Code Playgroud)

我真的不想使用上面的解决方法,并让spring覆盖类路径上的所有外部配置文件,就像它对application.properties文件所做的那样.

java spring config spring-boot

110
推荐指数
8
解决办法
34万
查看次数

spark - 在地图内过滤

我正在尝试过滤内部地图功能.基本上我在经典map-reduce中这样做的方式是mapper在过滤条件满足时不会向上下文写任何东西.我怎样才能与火花相似?我似乎无法从map函数返回null,因为它在shuffle步骤中失败.我可以使用过滤器功能,但是在我可以在地图期间执行相同的任务时,它似乎是不必要的数据集迭代.我也可以尝试使用虚拟键输出null,但这是一个糟糕的解决方法.

java apache-spark

11
推荐指数
1
解决办法
1万
查看次数

tomcat7-maven-plugin无法在类路径上找到属性文件

我正在尝试使用"tomcat7-maven-plugin"对war文件运行集成测试.当战争被部署时,它基本上会加载spring applicaitoncontext,后者又会在类路径上预期属性文件.在常规的tomcat实例中,我将属性文件保存在我的机器上,然后配置catalina.properties - > common.loader指向该目录.但我不知道如何用这个插件实现这一目标.

这是我试过的插件配置:

<plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <!-- port>8090</port -->
                <url>http://localhost:8080/manager/text</url>
                <server>TomcatServer</server>
                <path>/${project.build.finalName}</path>
                <!-- systemProperties>
                    <systemProperty>
                        <maven.tomcat.port>8080</maven.tomcat.port>
                    </systemProperty>
                </systemProperties -->
                <!-- if you want to use test dependencies rather than only runtime -->
                <useTestClasspath>false</useTestClasspath>
                <!-- optional if you want to add some extra directories into the classloader -->
                <additionalClasspathDirs>
                    <additionalClasspathDir>${basedir}/src/test/resources</additionalClasspathDir>
                </additionalClasspathDirs>
                <additionalConfigFilesDir>${basedir}/src/test/resources</additionalConfigFilesDir>
            </configuration>
            <executions>
                <execution>
                    <id>tomcat-run</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <!--  goal>run</goal -->
                        <goal>run-war-only</goal>
                    </goals>
                    <configuration>
                        <additionalClasspathDirs>
                            <additionalClasspathDir>${basedir}/src/test/resources</additionalClasspathDir>
                        </additionalClasspathDirs>
                        <additionalConfigFilesDir>${basedir}/src/test/resources</additionalConfigFilesDir>
                    </configuration>

                </execution>
                <execution>
                    <id>tomcat-shutdown</id>
                    <goals>
                      <goal>shutdown</goal>
                    </goals>
                    <phase>post-integration-test</phase> …
Run Code Online (Sandbox Code Playgroud)

integration-testing maven tomcat7

8
推荐指数
1
解决办法
6088
查看次数

纱线容器的理解和调整

嗨,我们最近从mr1升级到纱线.我知道容器是一个抽象的概念,但我不明白一个容器可以产生多少jvm任务(map,reduce,filter等),或者其他方式要求是容器可以跨多个映射重复使用或减少任务.我在下面的博客中读到:YARN中的容器是什么?

"each mapper and reducer runs on its own container to be accurate!" 这意味着如果我查看AM日志,我应该看到分配的容器数等于map任务的数量(失败|成功)加上reduce任务的数量是正确的吗?

我知道应用程序生命周期中容器的数量会根据AM请求,拆分,调度程序等而发生变化.

但有没有办法请求给定应用程序的最小容器的初始数量.我认为一种方法是配置公平调度程序队列.但还有什么能够决定这个吗?

在MR的情况下,如果我有mapreduce.map.memory.mb = 3gbmapreduce.map.cpu.vcores=4.我也有yarn.scheduler.minimum-allocation-mb = 1024myarn.scheduler.minimum-allocation-vcores = 1.

这是否意味着我将获得一个带有4个核心的容器或带有一个核心的4个容器?

还不清楚你在哪里可以指定mapreduce.map.memory.mbmapreduce.map.cpu.vcores.它们应该设置在客户端节点中还是可以按应用程序设置?

同样来自RM UI或AM UI是否有办法查看当前为给定应用程序分配的容器?

java hadoop hadoop-yarn

6
推荐指数
1
解决办法
3609
查看次数

mongodb java $in 使用 $regex 进行查询

我正在尝试用 mongo+java 编写$in查询$regex。它在 mongo shell 中也不起作用。我的意思是我没有得到任何结果,但也没有查询解析错误。这是我从 Java 调试器在我所说的行得到的最终查询collection.find(finalQuery)

{"$and": [ 
    {"$or": [
        {"country": "united states"}
    ]}, 
    {"businesses": {
        "$in": [
            {"$regex": "^.*cardinal.*health.*$"},
            {"$regex": "^.*the.*hartford.*$"}
        ]
    }}
]}
Run Code Online (Sandbox Code Playgroud)

上述查询的 Java 代码片段:

{"$and": [ 
    {"$or": [
        {"country": "united states"}
    ]}, 
    {"businesses": {
        "$in": [
            {"$regex": "^.*cardinal.*health.*$"},
            {"$regex": "^.*the.*hartford.*$"}
        ]
    }}
]}
Run Code Online (Sandbox Code Playgroud)

但是,以下查询在 mongo shell 中有效,但我不知道如何将其写入 java:

{"registering_organization": {
    "$in": [
        /^.*cardinal.*health.*$/,
        /^.*the.*hartford.*$/
    ]
}}
Run Code Online (Sandbox Code Playgroud)

如果我们尝试将正则表达式定义为字符串,Java 代码会在正则表达式周围添加双引号。

java regex mongodb

5
推荐指数
1
解决办法
2万
查看次数

Spring启动和apache spark - 容器冲突

我试图在项目中一起使用spring boot 1.1.5和apache spark 1.0.2.看起来像apache spark在内部使用Jetty容器,我已经配置spring-boot来使用Tomcat容器.但是,应用程序启动因根本原因导致某些securityException失败.如果我看到完整的堆栈跟踪看起来像spring boot试图初始化"jettyEmbeddedServletContainerFactory",它不应该在第一时间.由于通过火花的码头存在,它可能从类路径中拾取它.如果我从火花中排除jetty并再次运行我没有再次看到相同的错误但是由于没有找到jetty而导致SparkContext初始化失败.我如何告诉spring-boot运行时查找"TomcatEmbeddedServletContainerFactory"而不是jetty?

tomcat maven spring-boot apache-spark

4
推荐指数
1
解决办法
2732
查看次数

scala将Array [String]转换为case类

新手问题,但我经常发现自己使用文件,解析每一行并将其转换为案例类,以便我可以进一步使用更像对象的方式.在java和现在scala我做同样的程序.

case class ABC(v1: Int, v2: String)
val str = line.split("\t")
val v1 = str(0).toInt
val v2 = str(1)
ABC(v1, v2)
Run Code Online (Sandbox Code Playgroud)

有没有更短的方法我可以从数组创建案例类?这变得非常繁琐,因为我总是需要处理大量的字段.

scala case-class

4
推荐指数
1
解决办法
3331
查看次数

hbase 如何选择预拆分策略以及它如何影响您的行键

我正在尝试预先拆分 hbase 表。HbaseAdmin java api 是创建一个 hbase 表,它是 startkey、endkey 和区域数量的函数。这是我从 HbaseAdmin 使用的 java apivoid createTable(HTableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions)

关于根据数据集选择 startkey 和 endkey 有什么建议吗?

我的方法是假设我们在数据集中有 100 条记录。我希望数据大约分为 10 个区域,因此每个区域将有大约 10 条记录。所以为了找到startkey,我会说scan '/mytable', {LIMIT => 10}并选择最后一个rowkey作为我的startkey,然后scan '/mytable', {LIMIT => 90}选择最后一个rowkey作为我的endkey。

这种查找 startkey 和 rowkey 的方法看起来不错还是有更好的做法?

编辑 我尝试了以下方法来预拆分空表。所有三个都不像我使用的那样工作。我想我需要加盐才能获得平等分配。

PS> 我只显示一些地区信息

1)

byte[][] splits = new RegionSplitter.HexStringSplit().split(10);
hBaseAdmin.createTable(tabledescriptor, splits);
Run Code Online (Sandbox Code Playgroud)

这给出了具有以下边界的区域:

{
    "startkey":"-INFINITY",
    "endkey":"11111111",
    "numberofrows":3628951,
},
{
    "startkey":"11111111",
    "endkey":"22222222",
},
{   
    "startkey":"22222222",
    "endkey":"33333333",
},
{
    "startkey":"33333333", …
Run Code Online (Sandbox Code Playgroud)

java hadoop hbase

4
推荐指数
1
解决办法
5281
查看次数

scala - map.get为null键返回None,但不为null值返回

有没有更好的方法来做?

val v = map.get(key)
      v match {
        case None => default
        case Some(str) => {
          if(str == null) default else str << how to avoid additional null check here
        }
      }
Run Code Online (Sandbox Code Playgroud)

scala

1
推荐指数
1
解决办法
1498
查看次数

scala类型别名 - 如何使用表示多种数据类型的类型

是否可以定义表示多个数据类型的类型别名?

package object scala {
  type SingleDimension = Double
  type MultiDimensionMap = Map[String, Double]
  type MultiDimensionList = List[Tuple2[String, Double]]
}
Run Code Online (Sandbox Code Playgroud)

例如,我需要一个suptertype让我们说DataDimension只代表三种类型.所以我可以做到以下几点:

trait AbstractDataWorker[T] {

  def formula(d: Double): T
}


class multiDimensionWorker extends AbstractDataWorker[MultiDimensionMap] {

  type T = MultiDimensionMap
  override def formula(d: Double): MultiDimensionMap = {

    Map[String, Double]()
  }

}

class singleDimensionWorker extends AbstractDataWorker[SingleDimension] {

  type T = SingleDimension
  override def formula(d: Double): SingleDimension = {
    2.0
  }

}
Run Code Online (Sandbox Code Playgroud)

但是下面应该给出编译错误.目前它的作品.

class stringDimensionWorker extends AbstractDataWorker[String] {

  type T = String
  override def …
Run Code Online (Sandbox Code Playgroud)

scala

0
推荐指数
1
解决办法
2292
查看次数