我通过以下步骤在远程服务器上以独立模式启动Spark:
cp spark-env.sh.template spark-env.shspark-env.sh SPARK_MASTER_HOST=IP_OF_MY_REMOTE_SERVERsbin/start-master.sh sbin/start-slave.sh spark://IP_OF_MY_REMOTE_SERVER:7077 我尝试连接到远程主控:
val spark = SparkSession.builder()
.appName("SparkSample")
.master("spark://IP_OF_MY_REMOTE_SERVER:7077")
.getOrCreate()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR SparkContext: Error initializing SparkContext.
java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries!
Run Code Online (Sandbox Code Playgroud)
和警告:
WARN Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078.
.....
WARN Utils: Service 'sparkMaster' could not bind on port 7092. Attempting port 7092.
Run Code Online (Sandbox Code Playgroud) 据我所知,Akka使用多个线程为ActorSystem中的所有actor提供服务.我想以编程方式检查Akka使用的线程数.但我不想使用分析器或jConsole.
我看了一篇来自JavaDays的代码,作者说这种方法有概率非常有效,可以将类似String的字符串存储到String实习方法
public class CHMDeduplicator<T> {
private final int prob;
private final Map<T, T> map;
public CHMDeduplicator(double prob) {
this.prob = (int) (Integer.MIN_VALUE + prob * (1L << 32));
this.map = new ConcurrentHashMap<>();
}
public T dedup(T t) {
if (ThreadLocalRandom.current().nextInt() > prob) {
return t;
}
T exist = map.putIfAbsent(t, t);
return (exist == null) ? t : exist;
}
}
Run Code Online (Sandbox Code Playgroud)
请解释一下,这一行中概率的影响是什么:
if (ThreadLocalRandom.current().nextInt() > prob) return t;
Run Code Online (Sandbox Code Playgroud)
这是Java Days的原始演示文稿https://shipilev.net/talks/jpoint-April2015-string-catechism.pdf(56th slide)
在这种情况下,字符串插值工作正常:
val name = "Bill"
val result = s"My Name is ${name}"
Run Code Online (Sandbox Code Playgroud)
当我将它引入变量时,它没有获得插值:
val name = "Bill"
val greeting = "My Name is ${name}"
val result = s"${greeting}"
Run Code Online (Sandbox Code Playgroud)
直接包装greeting不是合适的解决方案,我必须像普通字符串一样处理问候语。
我在 quora上读过一篇文章,它告诉我们Spark Thrift服务器与Apache Thrift相关,Apache Thrift是一种二进制通信协议。Spark Thrift 服务器是Hive 的接口,但是Spark Thrift 服务器是如何使用Apache Thrift 通过二进制协议/rpc 与Hive 通信的呢?
我对中的扇出策略有些困惑Akka streams,我读到
Broadcast–给定一个输入元素发射到每个输出,Balance(1个输入,N个输出),而给定一个输入元素发射到其输出之一的(1个输入,N个输出)端口。
你能解释一下我吗:
我考虑了两个具有相似概念的集合 -ParHashMap来自 Scala 和来自 Java 的 ConcurrentHashMap。它们都具有相同的时间复杂度,并且都是线程安全和无锁的,但它们仅基于不同的概念——相应的特里和哈希表。这个推理导致了一个问题:为什么我们需要来自 Scala 的 ParHashMap 而有来自 Java 的 ConcurrentHashMap?
scala ×5
akka ×2
apache-spark ×2
java ×2
akka-stream ×1
dictionary ×1
duplicates ×1
string ×1
trie ×1