我正在尝试设置一个Sparkstreaming代码,该代码从Kafka服务器读取行,但使用在另一个本地文件中编写的规则来处理它.我正在为流数据创建streamingContext,并为其他应用所有其他spark功能的sparkContext创建 - 比如字符串操作,读取本地文件等
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("ReadLine")
val ssc = new StreamingContext(sparkConf, Seconds(15))
ssc.checkpoint("checkpoint")
val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
val sentence = lines.toString
val conf = new SparkConf().setAppName("Bi Gram").setMaster("local[2]")
val sc = new SparkContext(conf)
val stringRDD = sc.parallelize(Array(sentence))
Run Code Online (Sandbox Code Playgroud)
但这会引发以下错误
Exception in thread "main" org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true. The currently running SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:82)
org.apache.spark.streaming.StreamingContext$.createNewSparkContext(StreamingContext.scala:874) …Run Code Online (Sandbox Code Playgroud) 我试图在某些数据库异常上使用重试策略实现数据库查询.重试策略的代码不是很相关,所以我没有包含它.正如您在下面的代码中看到的那样 - 我编写了一个retryCallable,它采用了重试策略和Callable populateData().
在getDataFromDB,我从DB获取数据并将数据放在全局散列图中,该散列图在应用程序级别充当缓存.
此代码按预期工作.我想populateData从另一个班级调用.但是,这将是一个阻止呼叫.由于这是数据库并且具有重试策略,因此这可能很慢.我想populateData异步调用.
我如何使用CompletableFuture或FutureTask来实现这一目标?
CompletableFuture.runAsync期待一个可运行的.CompletableFuture.supplyAsync期待供应商.我以前没有实现过这些东西.所以关于最佳实践的任何建议都会有所帮助.
Class TestCallableRetry {
public void populateData() {
final Callable<Set<String>> retryCallable = new RetryingCallable<>(retryStrategyToRetryOnDBException(), getDataFromDB());
Set<String> data = new HashSet<>();
data = retryCallable.call();
if (data != null && !data.isEmpty()) {
// store data in a global hash map
}
}
private Callable<Set<Building>> getDataFromDB() {
return new Callable<Set<String>>() {
@Override
public Set<String> call() {
// returns data from database
}
};
}
}
Class …Run Code Online (Sandbox Code Playgroud) 我是 Ruby on Rails 的新手。我正在尝试使用命令生成模型
rails 生成模型 电影标题:文本 年份:整数 评分:整数 描述:文本
但我收到错误:
invoke active_record The name 'Movie' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.
Run Code Online (Sandbox Code Playgroud)
我真的很想保留电影这个名字。我也尝试过以下删除表 - 但该表不存在于数据库中
sqlite> drop table Movie;
Error: no such table: Movie
Run Code Online (Sandbox Code Playgroud)
我不确定如何修复此错误或导致此错误的原因。对此的任何帮助都会很棒。提前致谢。
在Windows7(64位)上是否有适用于CUDA的良好仿真器,这不会导致任何兼容性问题?
我还想知道安装模拟器的过程.
提前致谢.
我有一个如下所示的数据集 -
0 - 1,2,4
1 - 0,4
2 - 0,4
4 - 2,1,0
我想读取每一行并将其转换为如下所示的内容
//对于0-1,2,4
(0,1)<2,4>
(0,2)<1,4>
(0,4)<1,2>行
//对于行1 - 0,4
(0,1)<4>
(1,4)<0>
//始终在对中首先出现较小的数字
即,读取" - "分隔符上分隔的每一行.所以我从数据集的第1行得到0和1,2,4.在那之后,我想要创建对.例如,(0,1)将是转换后的地图的关键,其值应为2,4.
完成后,我希望能够按键对值进行分组
例如(0,1)<2,4> <4>
并将它们相交以得到4.
可以这样做吗?我的做法是对的吗?
我到目前为止编写了以下代码 -
var mapOperation = logData.map(x=>x.split("\t")).filter(x => x.length == 2).map(x => (x(0),x(1)))
// reading file and creating the map Example - key 0 value 1,2,4
//from the first map, trying to create pairs
var mapAgainstValue = mapOperation.map{
line =>
val fromFriend = line._1
val toFriendsList = line._2.split(",") …Run Code Online (Sandbox Code Playgroud) 我有一个格式为的 Spark 数据集 -
+--------------+--------+-----+
|name |type |cost |
+--------------+--------+-----+
|AAAAAAAAAAAAAA|XXXXX |0.24|
|AAAAAAAAAAAAAA|YYYYY |1.14|
|BBBBBBBBBBBBBB|XXXXX |0.78|
|BBBBBBBBBBBBBB|YYYYY |2.67|
|BBBBBBBBBBBBBB|ZZZZZ |0.15|
|CCCCCCCCCCCCCC|XXXXX |1.86|
|CCCCCCCCCCCCCC|YYYYY |1.50|
|CCCCCCCCCCCCCC|ZZZZZ |1.00|
+--------------+--------+----+
Run Code Online (Sandbox Code Playgroud)
我想将其转换为类型的对象 -
public class CostPerName {
private String name;
private Map<String, Double> costTypeMap;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是,
+--------------+-----------------------------------------------+
|name | typeCost. |
+--------------+-----------------------------------------------+
|AAAAAAAAAAAAAA|(XXXXX, 0.24), (YYYYY, 1.14) |
|BBBBBBBBBBBBBB|(XXXXX, 0.78), (YYYYY, 2.67), (ZZZZZ, 0.15) |
|CCCCCCCCCCCCCC|(XXXXX, 1.86), (YYYYY, 1.50), (ZZZZZ, 1.00) |
+--------------+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
即,对于每个name,我想要一张 的地图(type, cost)。
实现这一转变的有效途径是什么?我可以使用一些数据帧转换吗?我尝试了 groupBy 但只有在执行 sum、avg 等聚合查询时才有效。
我正在尝试使用命令行界面在Bluemix上部署Etherpad版本1.5.7(https://github.com/cloudfoundry/cli/releases),按照此处的指南 - https://www.ng.bluemix.net/文档/起动/ install_cli.html
执行命令时出现此错误 - cf push appname https://github.com/cloundfoundry/node.js-buildpack.git
有关如何解决此错误的任何帮助都会有所帮助.TIA.