小编Tom*_*Tom的帖子

Arrays.asList的原始类型和包装类型

我有以下简单的测试用例

@Test
public void testArraysAsList() {
    Character[] chars1 = new Character[]{'a', 'b'};
    System.out.println(Arrays.asList(chars1).size());


    char[] chars2 = new char[]{'a', 'b'};
    System.out.println(Arrays.asList(chars2).size());

}
Run Code Online (Sandbox Code Playgroud)

结果是:2 1

我不明白Arrays.asList(chars2),为什么要Arrays.asList(char[])制作一个单一的列表,元素为char [].

java

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

如何使用RDD API在分区内排序(并避免跨分区排序)?

它是Hadoop MapReduce shuffle的默认行为,用于对分区内的shuffle键进行排序,但不是跨越分区(这是使得键跨越分区进行排序的总排序)

我会问如何使用Spark RDD实现相同的功能(在分区内排序,但不能跨分区排序)

  1. RDD的sortByKey方法是进行总排序
  2. RDD repartitionAndSortWithinPartitions正在分区内进行排序,但不是跨越分区,但不幸的是,它增加了一个额外的步骤来进行重新分区.

是否有直接的方法在分区内排序但不跨越分区?

apache-spark

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

ES中discovery.seed_hosts和cluster.initial_master_nodes是什么意思

我正在使用 ES 7.10.1,并且正在阅读https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#unicast.hosts

我有5个主节点(node.master: true node.data: false)和20个数据节点(node.master: false node.data: true)

我有以下四个问题:

  1. discovery.seed_hosts 和都应该cluster.initial_master_nodes与节点一起指定吗master?我的意思是,我可以为这两种配置指定数据节点吗?

  2. 由于我的案例有 5 个主节点,因此我应该为这两种配置指定多少个节点。我想我不必在这些配置中列出所有这 5 个节点?

  3. 在我看来,这discovery.seed_hosts就像旧版本的弹性搜索 discovery.zen.ping.unicast.hosts

  4. 在我看来,这cluster.initial_master_nodes就像旧版本的弹性搜索discovery.zen.minimum_master_nodes

谢谢!

elasticsearch

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

MongoException:java.lang.OutOfMemoryError:超出了GC开销限制

我正在批量写入MongoDB,并且得到了OOM异常(java.lang.OutOfMemoryError:超出了GC开销限制).我会问两个问题:1.这个OOM是从Mongo客户端驱动程序还是MongoDB服务器发生的?2.是否有一些线索如何发生这种情况?

FO 2016-11-15 15:19:10,437 - [TS] org.mongodb.driver.cluster info(71) - No server chosen by WritableServerSelector from cluster description ClusterDescription{type=UNKNOWN, connectionMode=MULTIPLE, all=[ServerDescription{address=mongo.server1-or:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server2:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server3:30000, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out INFO 2016-11-15 15:19:11,448 - [TS] org.mongodb.driver.cluster info(71) - No server chosen by WritableServerSelector from cluster description ClusterDescription{type=UNKNOWN, connectionMode=MULTIPLE, all=[ServerDescription{address=mongo.server1-or:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server2:30000, type=UNKNOWN, state=CONNECTING}, ServerDescription{address=mongo.server3:30000, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out INFO 2016-11-15 15:19:14,324 - [TS] org.mongodb.driver.cluster info(76) - Exception in monitor …

garbage-collection mongodb mongo-java mongo-java-driver

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

Runnable和lambda

我可以使用lambda创建一个简单的Runnable,如:

Runnable runnable = ()->{
    String message = "This is an hard coded string";
    System.out.println(message);
};
Run Code Online (Sandbox Code Playgroud)

上面的代码限制它创建了一个带有默认构造函数的Runnable(没有参数).

实际上,Runnable在创建时经常会获取信息,如下所示:

class MyRunnable implements Runnable {
    private final String message;

    public MyRunnable(String message) {
        this.message = message;
    }

    @Override
    public void run() {
        System.out.println(message);
    }
 }
Run Code Online (Sandbox Code Playgroud)

我会问如何为Runnable创建可以接受构造函数参数的lambda.

java lambda java-8

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

YARN vcore 中的虚拟核心是什么意思?

Yarn 使用虚拟核心的概念来管理 CPU 资源。我会问使用虚拟核心有什么好处,YARN 使用 vcore 有什么原因吗?

hadoop hadoop-yarn hadoop2

7
推荐指数
2
解决办法
9286
查看次数

这是设计中java lambda的限制吗?

我想定义一个简单的lambda,加起来三个整数:

(int a, int b,int c)->a+b+c
Run Code Online (Sandbox Code Playgroud)

对于这个简单的情况,我有两个选择:

  1. 定义功能界面.单个抽象方法应该是int add(int a, int b,int c),方法名称和可变量名称无关紧要.

  2. 使用方法参考.我必须定义一个类/方法或使用具有签名的现有方法int add(int a, int b,int c)

在这两种情况下,对于非常简单的lambda,我必须回到OOP世界(接口,类等)

但是在scala中,定义一个函数非常简单: val add= (a:Int,b:Int,c:Int)=>a+b+c

scala java-8

6
推荐指数
2
解决办法
260
查看次数

org.bson.codecs.configuration.CodecConfigurationException:找不到类 [Ljava.lang.String; 的编解码器;

我想运行以下命令来创建一个使用 MongoDB Java 驱动程序的用户,

    client = new MongoClient(mongoClientURI);
    MongoDatabase database = client.getDatabase("db_1");

    Document createUserCommand = new Document();
    createUserCommand.put("createUser", "abc");
    createUserCommand.put("pwd", "abc");
    createUserCommand.put("roles", new String[]{"userAdmin", "read", "readWrite", "dbAdmin", "dbOwner"});         database.runCommand(createUserCommand);
Run Code Online (Sandbox Code Playgroud)

但发生以下异常:

Exception in thread "main" org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class [Ljava.lang.String;.
    at org.bson.codecs.configuration.CodecCache.getOrThrow(CodecCache.java:46)
    at org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:63)
    at org.bson.codecs.configuration.ChildCodecRegistry.get(ChildCodecRegistry.java:51)
    at org.bson.codecs.DocumentCodec.writeValue(DocumentCodec.java:174)
    at org.bson.codecs.DocumentCodec.writeMap(DocumentCodec.java:189)
    at org.bson.codecs.DocumentCodec.encode(DocumentCodec.java:131)
    at org.bson.codecs.DocumentCodec.encode(DocumentCodec.java:45)
    at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63)
Run Code Online (Sandbox Code Playgroud)

看角色字段是一个数组导致这个问题,可以看看这个问题吗?谢谢

mongodb mongodb-java

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

如何使用spark将avro写入多个输出目录

嗨,有一个主题是使用MultipleTextOutputFormat在一个spark作业中将文本数据写入多个输出目录

通过键Spark写入多个输出 - 一个Spark作业

我会问是否有类似的方法将avro数据写入多个目录

我想要的是将avro文件中的数据写入不同的目录(基于时间戳字段,时间戳中的同一天转到同一目录)

avro apache-spark spark-avro

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

HttpUrlConnection.setChunkedStreamingMode的效果

我对此没有很好的了解HttpUrlConnection.setChunkedStreamingMode,此模式的作用是什么?

我有以下示例代码:

HttpURLConnection conn = getHttpURLConnection(_url);
conn.setChunkedStreamingMode(4096); //4k
conn.setConnectTimeout(3000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
byte[] buffer = new byte[1024 * 10];//10k
FileInputStream in= new FileInputStream(file); //Write the content of the file to the server
int len;
while ((len = in.read(buffer)) != -1) {
    out.write(buffer, 0, len);
}

out.flush();
in.close();
Run Code Online (Sandbox Code Playgroud)

说,文件大小为101k,我将块大小设置为4096。

  1. 每次写入时,HttpUrlConnection会向服务器发送4096字节吗?最后一次是1k?

  2. 请注意,我已经使用了10k缓冲区写入输出流,块大小和缓冲区大小不同是否重要?

  3. 如果我在代码中禁用ChunkedStreamMode,与设置4096的代码相比有什么效果?

java apache-httpclient-4.x

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