- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经使用 Spark 创建了一个 Apache Ignite 应用程序
应用程序将两个元组存储到IgniteRDD
当调用retrieve时,collect函数花费的时间超过3分钟。
提交的职位数量超过1000
代码片段:
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.ignite.spark.IgniteContext;
import org.apache.ignite.spark.IgniteRDD;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
public class CopyOfMainIgnite {
public static void main(String args[]) {
SparkConf conf = new SparkConf().setAppName("Demo").setMaster(
"spark://169.254.228.183:7077");
System.out.println("Spark conf initialized.");
JavaSparkContext sc = new JavaSparkContext(conf);
sc.addJar("./target/IgnitePOC-0.0.1-SNAPSHOT-jar-with-dependencies.jar");
System.out.println("Spark context initialized.");
IgniteContext ic = new IgniteContext(sc.sc(),
"ignite/client-default-config.xml");
System.out.println("Ignite Context initialized.");
String cacheName = "demo6";
save(sc, ic, cacheName);
retrieve(ic, cacheName);
ic.close(false);
sc.close();
}
private static void retrieve(IgniteContext ic, String cacheName) {
System.out.println("Getting IgniteRDD saved.");
IgniteRDD<String, String> javaIRDDRet = ic.fromCache(cacheName);
long temp1 = System.currentTimeMillis();
JavaRDD<Tuple2<String, String>> javardd = javaIRDDRet.toJavaRDD();
System.out
.println("Is empty Start Time: " + System.currentTimeMillis());
System.out.println("javaIRDDRet.isEmpty(): " + javardd.isEmpty());
System.out.println("Is empty End Time: " + System.currentTimeMillis());
long temp2 = System.currentTimeMillis();
long temp3 = System.currentTimeMillis();
System.out.println("collect and println Start Time: "
+ System.currentTimeMillis());
javardd.collect().forEach(System.out::println);
System.out.println("collect and println End Time: "
+ System.currentTimeMillis());
long temp4 = System.currentTimeMillis();
System.out.println("Is empty : " + temp1 + " " + temp2
+ " Collect and print: " + temp3 + " " + temp4);
}
private static void save(JavaSparkContext sc, IgniteContext ic,
String cacheName) {
IgniteRDD<String, String> igniteRDD = ic.fromCache(cacheName);
System.out.println("IgniteRDD from cache initialized.");
Map<String, String> tempMap = new HashMap<String, String>();
tempMap.put("Aditya", "Jain");
tempMap.put("Pranjal", "Jaju");
Tuple2<String, String> tempTuple1 = new Tuple2<String, String>(
"Aditya", "Jain");
Tuple2<String, String> tempTuple2 = new Tuple2<String, String>(
"Pranjal", "Jaju");
List<Tuple2<String, String>> list = new LinkedList<Tuple2<String, String>>();
list.add(tempTuple1);
list.add(tempTuple2);
JavaPairRDD<String, String> jpr = sc.parallelizePairs(list, 4);
System.out.println("Random RDD saved.");
igniteRDD.savePairs(jpr.rdd(), false);
System.out.println("IgniteRDD saved.");
}
}
所以我的问题:从 Ignite 获取 2 个 Rdd 元组并在我的进程中收集它们是否需要 3-4 分钟?
或者我对它会在几毫秒内响应的期望是错误的?
调试后,我发现它在 ignite rdd 中创建 1024 个分区,这导致它触发 1024 个作业。而且我没有任何方法来控制分区数量。
最佳答案
您可以减少CacheConfiguration
中的分区数量:
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="affinity">
<bean class="org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction">
<property name="partitions" value="32"/>
</bean>
</property>
</bean>
您还可以使用 IgniteRDD.sql(..)
和 IgniteRDD.objectSql(..)
方法利用快速索引搜索直接从 Ignite 检索数据。有关如何在 Ignite 中配置 SQL 的详细信息,请参阅此页面:https://apacheignite.readme.io/docs/sql-queries
关于JavaRDD 从 IgniteRDD 需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37727599/
这个问题在这里已经有了答案: Isn't an Int64 equal to a long in C#? (2 个答案) 关闭 9 年前。 它不应该是一个整数类型吗? 这样,一些使用 int 的函数
当我遇到一些我想知道的事情时,我正忙着解析一个二进制文件。 Stream.Position属性的类型为Int64或long。为什么是这样?因为流中的位置不能为负,所以使用 UInt64 不是更有意义吗
所以第一部分是我从用户那里获得输入,在本例中,输入是“1”作为从另一个函数接收的字符值。 printf ("\nPlease enter 1, 2, 3 or q: "); option =
我正在尝试使用以下代码从 REST 服务返回 JSON: $categories = $categoriesController->listAll(); if($categories){ hea
我阅读了文档,它说 long 是 %li,但打印输出返回为 -2147024891。是什么赋予了? 最佳答案 您甚至没有提供要打印的号码,但我猜您已经无意中发现了签名打印和未签名打印之间的区别。 使用
我正在创建自定义购物车,我正在构建一个查询,该查询从检索我刚刚保存到购物车表中的 session_id 开始。我知道这个值被保存了,我在 mysql 命令行运行这个查询,它返回我需要的但我没有将值放入
我有一个包含 textView 的 scrollView。如果文本很长并且不适合屏幕,我想增加 textView 高度(我想我可以通过添加 NSLayoutConstraint outlet 并修改它
我有一个基本的数据库处理程序类,其中有一个使用 PDO::FETCH_ASSOC 参数返回结果集的公共(public)方法: public function resultSet() { $th
在后台线程中,我调用 PublishSubject.onNext(); 并在主线程中通过 subscribe(PublishSubject.filter(message -> message.getI
我想知道为什么 Amazon Web Services 控制台登录页面有这么长的 url?为什么不只发布数据而不显示其中包含大量数据的冗长 url。以这种方式实现有什么充分的理由吗? 最佳答案 我认为
这个问题在这里已经有了答案: Can I mix MySQL APIs in PHP? (4 个答案) 关闭 6 年前。 希望我犯了一个快速而明显的错误,我浏览了 previous question
我得到了答案:如果我禁用了cookie,那么使用URL重定向我可以传递JSESSIONID,但我的URL已经很长,因为我使用它有约束的GET方法。那怎么办我应该使用我的 session 吗?我希望我的
目前,当我使用 DOMDocument 对象并调用 saveHTML() 时,它会自动添加一些我不需要的 html 标签。我尝试了此处建议的解决方案 ( https://stackoverflow.c
我是一名优秀的程序员,十分优秀!