我无法在cassandra.yaml中找到它,也许nodetool可以获得我的集群配置的复制因子?
复制因子的默认值是多少?
在Cassandra DataStax的介绍过程中,他们说必须同步Cassandra集群节点的所有时钟,以防止READ查询"旧"数据.
如果一个或多个节点关闭,他们无法获得更新,但只要他们再次备份 - 他们会更新并且没有问题......
那么,为什么Cassandra集群需要在节点之间同步时钟?
我试图通过使用以下方法过滤大型Cassandra表的一小部分:
val snapshotsFiltered = sc.parallelize(startDate to endDate).map(TableKey(_2)).joinWithCassandraTable("listener","snapshots_test_b")
Run Code Online (Sandbox Code Playgroud)
我想映射cassandra表中作为分区键的一部分的'created'列中的行.
我的表键(表的分区键)定义为:
case class TableKey(imei: String, created: Long, when: Long)
Run Code Online (Sandbox Code Playgroud)
结果是错误:
[error] /home/ubuntu/scala/test/test.scala:61:没有足够的方法适用于方法:( imei:String,created:Long)test.TableKey in object TableKey.[error]已创建未指定的值参数.[error] val snapshotsFiltered = sc.parallelize(startDate to endDate).map(TableKey(_2)).joinWithCassandraTable("listener","snapshots_test_b")[error] ^ [error]发现一个错误[error](编译:编译) )编译失败
它只与文档中的分区键中的一个对象一起使用.
为什么多分区密钥有问题? - 已回答.
编辑:我试图以正确的形式使用joinWithCassandraTable:
val snapshotsFiltered = sc.parallelize(startDate to endDate).map(TableKey("*",_,startDate)).joinWithCassandraTable("listener","snapshots_test_c")
Run Code Online (Sandbox Code Playgroud)
当我试图在Spark上运行时没有错误,但它永远停留在"[阶段0:>(0 + 2)/ 2]"
出了什么问题?
我试图通过使用以下方法过滤大型C*表的一小部分:
val snapshotsFiltered = sc.parallelize(startDate to endDate).map(TableKey(_)).joinWithCassandraTable("listener","snapshots_tspark")
println("Done Join")
//*******
//get only the snapshots and create rdd temp table
val jsons = snapshotsFiltered.map(_._2.getString("snapshot"))
val jsonSchemaRDD = sqlContext.jsonRDD(jsons)
jsonSchemaRDD.registerTempTable("snapshots_json")
Run Code Online (Sandbox Code Playgroud)
附:
case class TableKey(created: Long) //(created, imei, when)--> created = partititon key | imei, when = clustering key
Run Code Online (Sandbox Code Playgroud)
cassandra表模式是:
CREATE TABLE listener.snapshots_tspark (
created timestamp,
imei text,
when timestamp,
snapshot text,
PRIMARY KEY (created, imei, when) ) WITH CLUSTERING ORDER BY (imei ASC, when ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = …Run Code Online (Sandbox Code Playgroud) cqlsh不允许嵌套查询,所以我不能选择导出数据到CSV ..我想选择的数据(约200,000行与一列)使用卡桑德拉出口:
echo "SELECT distinct imei FROM listener.snapshots;" > select.cql
bin/cqlsh -f select.cql > output.txt
它只是永远没有任何错误,并且文件没有增长.
如果我在最后一行使用strace,我会得到很多行:
select(0, NULL, NULL, NULL, {0, 2000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 4000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 8000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 16000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 32000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 1000}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {0, 2000}) = 0 (Timeout) …Run Code Online (Sandbox Code Playgroud) 我有以下型号:
class A(models.Model):
name = models.CharField(max_length=100)
c = models.ForeignKey(C, related_name='letters_c', null=True, blank=True)
...
class B(models.Model):
id= models.CharField(max_length=200, blank=False, default="")
a = models.ForeignKey(A, related_name='letters_a', default=0)
...
Run Code Online (Sandbox Code Playgroud)
使用以下管理员:
class AAdmin(admin.ModelAdmin):
fields = ['name', 'c', 'letters_a']
list_display = ['name']
ordering = ['name']
Run Code Online (Sandbox Code Playgroud)
我有一个错误
'letters_a' not found.
Run Code Online (Sandbox Code Playgroud)
我想我不完全理解外键和它们在Django模型中的表示之间的逻辑。
我希望能够添加/编辑并在Django admin中看到类A letters_arelated_name对象。
我该怎么做?
我有一个spark(1.2.1 v)作业,使用scala的 postgresql.Driver将rdd的内容插入到postgres中:
rdd.foreachPartition(iter => {
//connect to postgres database on the localhost
val driver = "org.postgresql.Driver"
var connection:Connection = null
Class.forName(driver)
connection = DriverManager.getConnection(url, username, password)
val statement = connection.createStatement()
iter.foreach(row => {
val mapRequest = Utils.getInsertMap(row)
val query = Utils.getInsertRequest(squares_table, mapRequest)
try { statement.execute(query) }
catch {
case pe: PSQLException => println("exception caught: " + pe);
}
})
connection.close()
})
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我为rdd的每个分区打开了到postgres的新连接,然后关闭它。我认为,以正确的方式去将是使用连接池,Postgres的,我可以从连接(如描述在这里),但它只是伪代码:
rdd.foreachPartition { partitionOfRecords =>
// ConnectionPool is a static, lazily initialized pool of connections …Run Code Online (Sandbox Code Playgroud) 我有Elasticsearch v 2.2.0 集群、1 个节点、4g 堆大小、7g RAM、2 个 cpu 核心、401 个索引、1,873 个分片、107,780,287 个文档,总数据 70.19GB。
我还配置了index.fielddata.cache.size: 40%。
问题是当我使用 Kibana 查询某些东西(非常简单的查询)时,如果它是单个查询它工作正常,但如果我继续查询更多 - 弹性变得如此缓慢并最终卡住,因为 JVM 堆使用率(来自 Marvel)正在达到 87-95%。当我尝试加载一些 Kibana 仪表板时也会发生这种情况,这种情况的唯一解决方案是重新启动弹性服务或清除所有缓存。
为什么堆会这样卡住?
编辑:
编辑2:
为了更好地理解这个问题,我分析了内存转储。这个分析是在集群尝试一些 Kibana 查询之后执行的:
在某些索引中,我确实有 _ttl 的设置不起作用(_ttl 设置为 4 周,但文档仍在那里......)。从那以后,我更改了默认映射,但没有删除“不工作 ttl”索引。
这可能是主要问题吗?
我正在构建一个 Flask 网站,它是研究实验的一部分。我需要能够记住匿名用户,这样我网站的每个访问者都将是匿名且独一无二的,但也会被记住,这样他们就无法再次进入该网站(他们将重定向到“感谢您的参与”页面) .
我该怎么做?我查看了flask.session(如何生成唯一的匿名ID并将其保存到用户cookie?)和Flask-login(必须与用户登录才能获取ID)但没有找到这个问题的具体解决方案。
请帮忙。
我有一个在 ec2 amazon 服务器上运行的 Elasticsearch 集群。如本文所述,从正在运行的 JVM 捕获堆转储的方法是使用 jmap:
sudo jmap -dump:format=b,file=heap.hprof {processID}
Run Code Online (Sandbox Code Playgroud)
错误:{processID}:已知文件不安全
Jmap 需要运行该进程的用户,所以我必须执行如下命令:
sudo -u elasticsearch jmap -dump:format=b,file=heap.hprof {processID}
Run Code Online (Sandbox Code Playgroud)
错误:
将堆转储到 /home/ubuntu/heap.hprof ...
没有权限
所以我想我必须像这样使用 jmap:
sudo -u elasticsearch sh -c "sudo jmap -dump:format=b,file=heap.hprof {processID}"
Run Code Online (Sandbox Code Playgroud)
[sudo] 弹性搜索密码:
什么是elasticsearch用户密码?有一些默认值吗?我没有找到任何解决方案...
在文档中,它说SizeTieredCompactionStrategy(STCS)是默认的压缩策略.
如何获得群集的实际压缩策略?
cassandra ×7
apache-spark ×3
nodetool ×3
scala ×3
amazon-ec2 ×1
cqlsh ×1
django ×1
django-admin ×1
flask ×1
jvm ×1
mysql ×1
postgresql ×1
python ×1