标签: database-partitioning

如何在特定列上排名时进行分区?

所有:

我有一个类似于follow的数据框.我知道我可以做这样的全局排名顺序:

dt <- data.frame(
    ID = c('A1','A2','A4','A2','A1','A4','A3','A2','A1','A3'),
    Value = c(4,3,1,3,4,6,6,1,8,4)
);
> dt
   ID Value
1  A1     4
2  A2     3
3  A4     1
4  A2     3
5  A1     4
6  A4     6
7  A3     6
8  A2     1
9  A1     8
10 A3     4
dt$Order <- rank(dt$Value,ties.method= "first")
> dt
   ID Value Order
1  A1     4     5
2  A2     3     3
3  A4     1     1
4  A2     3     4
5  A1     4     6
6  A4     6     8
7 …
Run Code Online (Sandbox Code Playgroud)

r rank database-partitioning dataframe

14
推荐指数
3
解决办法
2万
查看次数

Mysql 5.5表分区用户和朋友

我的数据库中有两个表现在有数百万行,选择和插入越来越慢.

我正在使用spring + hibernate + mysql 5.5并阅读有关分片以及对表进行分区的信息,以及分区我的表的想法,

我目前的Db结构就像

CREATE TABLE `user` (
  `id` BIGINT(20) NOT NULL,
  `name` VARCHAR(255) DEFAULT NULL,
  `email` VARCHAR(255) DEFAULT NULL,
  `location_id` bigint(20) default NULL,
  `updated_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`),
  KEY `FK3DC99772C476E06B` (`location_id`),
  CONSTRAINT `FK3DC99772C476E06B` FOREIGN KEY (`location_id`) REFERENCES `places` (`id`) 
) ENGINE=INNODB DEFAULT CHARSET=utf8


CREATE TABLE `friends` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `user_id` BIGINT(20) DEFAULT NULL,
  `friend_id` BIGINT(20) DEFAULT NULL,
  `updated_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`), …
Run Code Online (Sandbox Code Playgroud)

mysql partitioning sharding database-partitioning

14
推荐指数
1
解决办法
2566
查看次数

将数据导入Spark时如何设置分区/节点数

问题:我想使用以下方法将数据从S3导入Spark EMR:

data = sqlContext.read.json("s3n://.....")
Run Code Online (Sandbox Code Playgroud)

有没有办法可以设置Spark用来加载处理数据的节点数量?这是我处理数据的示例:

data.registerTempTable("table")
SqlData = sqlContext.sql("SELECT * FROM table")
Run Code Online (Sandbox Code Playgroud)

上下文:数据不是太大,需要很长时间才能加载到Spark中,也需要查询.我认为Spark将数据划分为太多节点.我希望能够手动设置.我知道在处理RDD时sc.parallelize我可以将分区数作为输入传递.此外,我已经看到了repartition(),但我不确定它是否可以解决我的问题.在我的例子中,变量data是一个DataFrame.

让我更准确地定义分区.定义一个:通常被称为"分区键",其中一列中选择和索引,以加快查询(这不是我想要的).定义二:(这是我关注的地方)假设你有一个数据集,Spark决定它将它分布在许多节点上,以便它可以并行地对数据进行操作.如果数据量太小,这可能会进一步减慢进程.我该如何设置该值

sql database-partitioning apache-spark pyspark-sql

14
推荐指数
2
解决办法
2万
查看次数

如何在多个分区上进行SQL选择?

有没有比以下更有效的方式:

select * from transactions partition( partition1 ) 
union all 
select * from transactions partition( partition2 ) 
union all 
select * from transactions partition( partition3 ); 
Run Code Online (Sandbox Code Playgroud)

sql oracle database-partitioning

13
推荐指数
1
解决办法
6万
查看次数

hibernate使用分区的postgresql插入批处理

是否有分区postgresql表中通过hibernate批量插入的解决方案?目前我收到这样的错误......

ERROR org.hibernate.jdbc.AbstractBatcher - Exception executing batch:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
   at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)
   at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)
   at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:68)....
Run Code Online (Sandbox Code Playgroud)

我发现这个链接http://lists.jboss.org/pipermail/hibernate-dev/2007-October/002771.html但我不能随时随地在网络上找到的这个问题很好解决,或者它如何能得到解决

postgresql hibernate insert database-partitioning

12
推荐指数
1
解决办法
8416
查看次数

动态分区+在HIVE上创建AS

我正在尝试使用另一个表创建一个新表,CREATE AS并在HiveCLI上进行动态分区.我正在从Hive官方维基中学习,其中有这样的例子:

 CREATE TABLE T (key int, value string) 
 PARTITIONED BY (ds string, hr int) AS
 SELECT key, value, ds, hr+1 hr1 
   FROM srcpart 
   WHERE ds is not null 
   And hr>10;
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

FAILED:SemanticException [错误10065]:

CREATE TABLE AS SELECT命令无法指定目标表的列列表

资料来源:https://cwiki.apache.org/confluence/display/Hive/DynamicPartitions#DynamicPartitions-Syntax

mysql sql hadoop hive database-partitioning

12
推荐指数
1
解决办法
2万
查看次数

在实体上存储更改:MySQL是否是正确的解决方案?

我想存储我在"实体"表上所做的更改.这应该像一个日志.目前它在MySQL中使用此表实现:

CREATE TABLE `entitychange` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `entity_id` int(10) unsigned NOT NULL,
  `entitytype` enum('STRING_1','STRING_2','SOMEBOOL','SOMEDOUBLE','SOMETIMESTAMP') NOT NULL DEFAULT 'STRING_1',
  `when` TIMESTAMP NOT NULL,
  `value` TEXT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
  • entity_id=我entity桌子的主键.
  • entitytype= entity表中更改的字段.有时只改变一个字段,有时多个.一个变化=一排.
  • value =字段"新值"的字符串表示形式.

将Field entity.somedouble从3 更改为2 时的示例,我运行这些查询:

UPDATE entity SET somedouble = 2 WHERE entity_id = 123;
INSERT INTO entitychange (entity_id,entitytype,value) VALUES (123,'SOMEDOUBLE',2);
Run Code Online (Sandbox Code Playgroud)

我需要select更改过去15天的特定实体和实体类型.例如:最后15天内最后一次更改SOMEDOUBLE为entity_id 123.

现在,有两件事我不喜欢:

  1. 所有数据都存储为TEXT- 虽然大多数(小于1%)不是真正的文本,但就我而言,大多数值都是DOUBLE.这是一个大问题吗? …

mysql database-design temporal-database database-partitioning entity-attribute-value

11
推荐指数
2
解决办法
2926
查看次数

Ruby on Rails/ActiveRecord和表分区

我已经阅读了文档,并且到目前为止能够找到任何帮助我的东西.我还阅读了大量博客文章,但似乎没有任何内容直接回答我的问题:

是否可以使用ActiveRecord管理InnoDB表中的表分区? 我真的更喜欢保持非常干净,我试图避免编写外部脚本来尝试随着时间的推移自动创建/删除分区.

mysql postgresql activerecord ruby-on-rails database-partitioning

11
推荐指数
1
解决办法
2093
查看次数

Azure Cosmos数据库分区密钥 - 主键是否可接受?

我们的Azure Cosmos数据库集合已经足够大,需要分区密钥.在做一些阅读时,我得到的印象是最好的分区键是提供均匀分布和更高基数的键.Microsoft的这篇文章讨论了它.

使用主键作为分区键提供均匀分布,但基数只有1.如果这是我唯一的选择,这是一件坏事吗?上述文章给出了一些示例,似乎表明主键应该在这些实例中用作分区键.对于Azure Cosmos DB,分区是逻辑的,而不是物理的.因此,它不会导致将每个文档放在自己的磁盘上,但似乎它可能导致膨胀的索引.

使用主键作为分区键是一种常见的做法吗?它有什么缺点吗?

azure database-partitioning azure-cosmosdb

11
推荐指数
2
解决办法
3258
查看次数

如何对水平分区数据进行排序

我有一个电信计费软件系统.其中包含用户呼叫的每日日志.日志按日期(月)水平分区.每个分区都存储在一个单独的数据库中,可以分布在多个实例上.

在UI中,用户将指定日期范围.返回的数据可以在任何字段上排序.日期范围可能跨越多个分区.应用程序必须支持通过日期范围的数据进行分页.

我无法将太多记录加载到内存中进行排序.在查询中放置排序只能在一个结果集中提供排序数据.

所以我需要对多个分区中的数据进行排序,每个分区都是单独排序的 如何从多个排序结果集中将已排序记录返回到UI?

编辑:经过对此问题的更多分析,我们有更多的输入.也需要分页.因此,我们需要找到一种方法来对多个结果集进行实时排序.

java sorting database-partitioning

10
推荐指数
1
解决办法
256
查看次数