我有以下简单的测试用例
@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 [].
它是Hadoop MapReduce shuffle的默认行为,用于对分区内的shuffle键进行排序,但不是跨越分区(这是使得键跨越分区进行排序的总排序)
我会问如何使用Spark RDD实现相同的功能(在分区内排序,但不能跨分区排序)
sortByKey方法是进行总排序repartitionAndSortWithinPartitions正在分区内进行排序,但不是跨越分区,但不幸的是,它增加了一个额外的步骤来进行重新分区.是否有直接的方法在分区内排序但不跨越分区?
我正在使用 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)。
我有以下四个问题:
discovery.seed_hosts 和都应该cluster.initial_master_nodes与节点一起指定吗master?我的意思是,我可以为这两种配置指定数据节点吗?
由于我的案例有 5 个主节点,因此我应该为这两种配置指定多少个节点。我想我不必在这些配置中列出所有这 5 个节点?
在我看来,这discovery.seed_hosts就像旧版本的弹性搜索 discovery.zen.ping.unicast.hosts?
在我看来,这cluster.initial_master_nodes就像旧版本的弹性搜索discovery.zen.minimum_master_nodes?
谢谢!
我正在批量写入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 …
我可以使用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.
Yarn 使用虚拟核心的概念来管理 CPU 资源。我会问使用虚拟核心有什么好处,YARN 使用 vcore 有什么原因吗?
我想定义一个简单的lambda,加起来三个整数:
(int a, int b,int c)->a+b+c
Run Code Online (Sandbox Code Playgroud)
对于这个简单的情况,我有两个选择:
定义功能界面.单个抽象方法应该是int add(int a, int b,int c),方法名称和可变量名称无关紧要.
使用方法参考.我必须定义一个类/方法或使用具有签名的现有方法int add(int a, int b,int c)
在这两种情况下,对于非常简单的lambda,我必须回到OOP世界(接口,类等)
但是在scala中,定义一个函数非常简单:
val add= (a:Int,b:Int,c:Int)=>a+b+c
我想运行以下命令来创建一个使用 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)
看角色字段是一个数组导致这个问题,可以看看这个问题吗?谢谢
嗨,有一个主题是使用MultipleTextOutputFormat在一个spark作业中将文本数据写入多个输出目录
我会问是否有类似的方法将avro数据写入多个目录
我想要的是将avro文件中的数据写入不同的目录(基于时间戳字段,时间戳中的同一天转到同一目录)
我对此没有很好的了解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。
每次写入时,HttpUrlConnection会向服务器发送4096字节吗?最后一次是1k?
请注意,我已经使用了10k缓冲区写入输出流,块大小和缓冲区大小不同是否重要?
如果我在代码中禁用ChunkedStreamMode,与设置4096的代码相比有什么效果?
java ×3
apache-spark ×2
java-8 ×2
mongodb ×2
avro ×1
hadoop ×1
hadoop-yarn ×1
hadoop2 ×1
lambda ×1
mongo-java ×1
mongodb-java ×1
scala ×1
spark-avro ×1