我想通过Web应用程序向用户公开我的Spark应用程序.
基本上,用户可以决定他想要运行哪个动作并输入一些需要传递给spark应用程序的变量.例如:用户输入几个字段,然后点击一个按钮,用于执行以下操作的"运行sparkApp1与放慢参数MIN_X,MAX_X,MIN_Y,MAX_Y".
应该使用用户给出的参数启动spark应用程序.完成后,可能需要Web应用程序来检索结果(来自hdfs或mongodb)并将其显示给用户.处理时,Web应用程序应显示Spark应用程序的状态.
我的问题:
我正在运行带有YARN/Mesos(尚不确定)和MongoDB的Spark 1.6.1集群.
我想将已经模板化的 Helm Charts 导出为YAML文件.我目前无法在我的Kubernetes集群上使用Tiller,但仍想使用Helm Charts.基本上,我希望Helm将使用Helm模板化的值导出发送到Kubernetes API的YAML.之后,我将YAML文件上传到我的Kubernetes集群.
我试图跑,.\helm.exe install --debug --dry-run incubator\kafka
但我得到错误Error: Unauthorized
.
请注意,我在Windows上运行Helm(版本为helm-v2.9.1-windows-amd64).
我正在寻找一种方法来检索executionStats
聚合.
使用find()时,我可以使用explain轻松检索它们.示例输出:
"executionStats": {
"nReturned": 332505,
"executionTimeMillis": 1349,
"totalKeysExamined": 332505,
"totalDocsExamined": 332505,
...
Run Code Online (Sandbox Code Playgroud)
但是当使用启用了解释的聚合时,它将不会返回上面显示的统计数据.
这与此有关,但没有给出可行的解决方案.因为这可能在此期间发生了变化,我打开了这个问题.
如果不测量客户端的统计数据,有什么方法可以做到这一点吗?
我正在尝试为我的Javalin.io Web 应用程序编写单元测试。有一些对 Mockito 的引用用于模拟Context 对象,这是 Javalins 为用户提供对传入 Web 请求的访问权限的方式。我试图模拟该类的.header(String)
方法,Context
因为被测单元正在读取“授权”标头并对其执行 JWT 检查。
我的 pom 包含最新版本的 Mockito,它应该能够模拟最终类:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.2.0</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我通过创建resources/mockito-extensions/org.mockito.plugins.MockMaker
包含内容的文件,启用了 Mockito 文档中所述的内联模拟生成器mock-maker-inline
。
现在我有一个愚蠢的测试,它Context
模拟一个对象,并且每当调用上下文对象的 header() 方法时都应该返回“hello123”。以下代码是真实单元测试的一部分,但足以在运行测试时引发异常:
@Test
void stupidTest1() {
Context context = mock(Context.class);
String test1 = "hello123";
when(context.header("Authorization")).thenReturn(test1);
}
Run Code Online (Sandbox Code Playgroud)
也试过这个:
@Test
void stupidTest1() {
Context context = mock(Context.class);
String test1 = "hello123";
given(context.header("Authorization")).willReturn(test1);
}
Run Code Online (Sandbox Code Playgroud)
执行此测试mvn …
我在Spark应用程序和Mongos控制台上运行相同的聚合管道。在控制台上,眨眼间即可获取数据,只需第二次使用“ it”即可检索所有预期数据。但是,根据Spark WebUI,Spark应用程序将花费近两分钟的时间。
如您所见,正在启动242个任务来获取结果。我不确定为什么在MongoDB聚合仅返回40个文档的同时启动如此大量的任务。看起来开销很高。
我在Mongos控制台上运行的查询:
db.data.aggregate([
{
$match:{
signals:{
$elemMatch:{
signal:"SomeSignal",
value:{
$gt:0,
$lte:100
}
}
}
}
},
{
$group:{
_id:"$root_document",
firstTimestamp:{
$min:"$ts"
},
lastTimestamp:{
$max:"$ts"
},
count:{
$sum:1
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
Spark应用程序代码
JavaMongoRDD<Document> rdd = MongoSpark.load(sc);
JavaMongoRDD<Document> aggregatedRdd = rdd.withPipeline(Arrays.asList(
Document.parse(
"{ $match: { signals: { $elemMatch: { signal: \"SomeSignal\", value: { $gt: 0, $lte: 100 } } } } }"),
Document.parse(
"{ $group : { _id : \"$root_document\", firstTimestamp: { $min: \"$ts\"}, lastTimestamp: { $max: \"$ts\"} …
Run Code Online (Sandbox Code Playgroud) 我想在地图上显示我的地理位置,但是Compass需要访问互联网才能加载地图。由于此外部连接,我需要更改程序的代理设置。
我在文档中找不到关于此的任何信息。我也尝试使用Beta而不是Stable版本,但是两者似乎都没有在GUI中提供更改的代理设置。
有什么方法可以将代理设置添加到MongoDB Compass?
是否可以在 Kubernetes 上运行 Apache Hive(没有在 Kubernetes 上运行 YARN)?
我在网络上找不到任何合理的信息——在 Kubernetes 上运行 Hive 是一件非常罕见的事情吗?
我正在寻找一种将整个日志文件从边缘节点流式传输到 Hadoop 的方法。总结一下用例:
我想出了以下评价:
我为MongoDB和Cassandra构建了一个导入器.基本上导入器的所有操作都是相同的,除了最后一部分形成数据以匹配所需的cassandra表模式和想要的mongodb文档结构.与MongoDB相比,Cassandra的写入性能非常差,我认为我做错了.
基本上,我的抽象导入器类加载数据,读出所有数据并将其传递给扩展的MongoDBImporter或CassandraImporter类以将数据发送到数据库.一次针对一个数据库 - 同时没有"双重"插入C*和MongoDB.导入器在相同数量的节点上运行在同一台机器上(6).
问题:
MongoDB导入在57分钟后完成.我摄取了10.000.000个文档,我希望Cassandra的行数相同.我的Cassandra导入器现在运行2.5小时,并且只插入了5.000.000行.我将等待进口商完成并在此处编辑实际完成时间.
我如何用Cassandra导入:
我准备两个语句一旦摄取数据之前.这两个语句都是UPDATE查询,因为有时我必须将数据附加到现有列表.在开始导入之前,我的表格已完全清除.准备好的陈述一次又一次地被使用.
PreparedStatement statementA = session.prepare(queryA);
PreparedStatement statementB = session.prepare(queryB);
Run Code Online (Sandbox Code Playgroud)
对于每一行,我创建一个BoundStatement并将该语句传递给我的"自定义"批处理方法:
BoundStatement bs = new BoundStatement(preparedStatement); //either statementA or B
bs = bs.bind();
//add data... with several bs.setXXX(..) calls
cassandraConnection.executeBatch(bs);
Run Code Online (Sandbox Code Playgroud)
使用MongoDB,我可以一次插入1000个文档(这是最大的)没有问题.对于Cassandra来说,进口商com.datastax.driver.core.exceptions.InvalidQueryException: Batch too large
在某些时候仅仅因为我的10个陈述而崩溃了.我正在使用此代码来构建批次.顺便说一句,我以1000,500,300,200,100,50,20批量开始,但显然它们也不起作用.然后我将其设置为10并再次抛出异常.现在我已经没有想法为什么它会破裂.
private static final int MAX_BATCH_SIZE = 10;
private Session session;
private BatchStatement currentBatch;
...
@Override
public ResultSet executeBatch(Statement statement) {
if (session == null) {
throw new IllegalStateException(CONNECTION_STATE_EXCEPTION);
}
if (currentBatch == …
Run Code Online (Sandbox Code Playgroud) apache-spark ×3
mongodb ×3
hadoop ×2
java ×2
kubernetes ×2
mongodb-java ×2
apache-flink ×1
apache-nifi ×1
apache-tez ×1
bigdata ×1
cassandra ×1
flume ×1
hadoop-yarn ×1
hive ×1
logstash ×1
mockito ×1
tez ×1
unit-testing ×1