标签: partitioning

哪种算法可以在只有O(N)次移动的情况下进行稳定的就地二进制分区?

我试图理解这篇论文:线性时间内稳定的最小空间划分.

似乎这个主张的一个关键部分是

算法BO(nlog 2 n)时间和恒定的额外空间中稳定地排序大小为n的位数组,但仅使O(n)移动.

但是,本文没有描述算法,只引用了另一篇我无法访问的论文.我可以找到几种方法在时间范围内进行排序,但是我很难找到一个保证O(N)移动而不需要超过恒定空间的方法.

这个算法B是什么?换句话说,给定

boolean Predicate(Item* a);  //returns result of testing *a for some condition
Run Code Online (Sandbox Code Playgroud)

是有一个功能B(Item* a, size_t N);,其稳定地排序一个使用谓词如少于NLOG排序键2个 n次呼叫到谓词,只有O(N)写入到执行一个

algorithm big-o partitioning stable-sort

18
推荐指数
2
解决办法
3752
查看次数

当从HDFS手动删除分区数据时,如何在Hive中更新分区元数据

自动更新Hive分区表的元数据的方法是什么?

如果将新分区数据添加到HDFS(没有alter table add partition命令执行).然后我们可以通过执行命令'msck repair'来同步元数据.

如果从HDFS中删除了大量分区数据(没有执行alter table drop partition commad执行),该怎么办?

同步Hive metatdata的方法是什么?

hive partitioning

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

使用2列进行表分区

是否可以使用2列而不是仅1为分区函数对表进行分区?

考虑一个包含3列的表

    ID (int, primary key, 
    Date (datetime), 
    Num (int)

我想将这个表分为2列:DateNum.

这是我使用1列(日期)对表进行分区的方法:

create PARTITION FUNCTION PFN_MonthRange (datetime)
AS
RANGE left FOR VALUES ('2009-11-30 23:59:59:997',
                       '2009-12-31 23:59:59:997',
                       '2010-01-31 23:59:59:997',
                       '2010-28-02 23:59:59:997',
                       '2010-03-31 23:59:59:997')
go
Run Code Online (Sandbox Code Playgroud)

partitioning sql-server-2008

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

分区如何在Spark中工作?

我试图了解如何在Apache Spark中完成分区.你能帮忙吗?

这是场景:

  • 主节点和两个节点,每个节点有1个核心
  • 一个count.txt10 MB大小的文件

以下创建了多少个分区?

rdd = sc.textFile(count.txt)
Run Code Online (Sandbox Code Playgroud)

文件大小是否对分区数有影响?

partitioning apache-spark

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

Spark中的默认分区方案

当我执行以下命令时:

scala> val rdd = sc.parallelize(List((1,2),(3,4),(3,6)),4).partitionBy(new HashPartitioner(10)).persist()
rdd: org.apache.spark.rdd.RDD[(Int, Int)] = ShuffledRDD[10] at partitionBy at <console>:22

scala> rdd.partitions.size
res9: Int = 10

scala> rdd.partitioner.isDefined
res10: Boolean = true


scala> rdd.partitioner.get
res11: org.apache.spark.Partitioner = org.apache.spark.HashPartitioner@a
Run Code Online (Sandbox Code Playgroud)

它说有10个分区,分区完成使用HashPartitioner.但是当我执行以下命令时:

scala> val rdd = sc.parallelize(List((1,2),(3,4),(3,6)),4)
...
scala> rdd.partitions.size
res6: Int = 4
scala> rdd.partitioner.isDefined
res8: Boolean = false
Run Code Online (Sandbox Code Playgroud)

它说有4个分区,并且没有定义分区器.那么,什么是Spark中的默认分区方案?/如何在第二种情况下对数据进行分区?

partitioning apache-spark rdd

17
推荐指数
1
解决办法
5176
查看次数

mysql数据库自动分区

我有一个mysql数据库表,我想按日期分区,特别是按月和年.但是,当为新月添加新数据时,我不想手动更新数据库.

当我最初创建我的数据库时,我有数据在11月9日,12月9日,1月10日等.现在当2月开始时,我想要自动创建2月10日的分区.这可能吗?

mysql database performance partitioning

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

CAP定理的哪一部分是Cassandra牺牲的,为什么?

这里有一个很好的讨论,关于使用Kingsby的Jesper库模拟Cassandra中的分区问题.

我的问题是 - 在Cassandra你主要关注CAP定理的分区部分,还是一致性是你需要管理的一个因素?

partitioning high-availability consistency cassandra cap-theorem

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

如何查找集合的所有分区

我有一套不同的价值观.我正在寻找一种方法来生成此集合的所有分区,即将集合划分为子集的所有可能方式.

例如,该集{1, 2, 3}具有以下分区:

{ {1}, {2}, {3} },
{ {1, 2}, {3} },
{ {1, 3}, {2} },
{ {1}, {2, 3} },
{ {1, 2, 3} }.
Run Code Online (Sandbox Code Playgroud)

由于这些是数学意义上的集合,因此顺序无关紧要.例如,{1, 2}, {3}是相同的,{3}, {2, 1}也不应该是单独的结果.

可以在Wikipedia上找到集合分区的完整定义.

c# algorithm partitioning set

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

基于多类观察对r中的数据进行分区

我正在尝试对R中的数据集进行分区,2/3用于训练,1/3用于测试.我有一个分类变量和七个数值变量.每个观察被分类为A,B,C或D.

为简单起见,假设分类变量cl对于前100次观测是A,对于观察101到200是C,C到300,D到400.我正在尝试获得具有2/3的分区对于A,B,C和D中的每一个的观察结果(而不是简单地获得整个数据集的2/3的观察结果,因为它可能没有相同数量的每个分类).

当我尝试从数据的子集中进行采样时,例如sample(subset(data, cl=='A')),列被重新排序而不是行.

总而言之,我的目标是从A,B,C和D中的每一个随机观察67个作为我的训练数据,并将A,B,C和D中的每一个的剩余33个观测值存储为测试数据.我发现了一个与我非常相似的问题,但它没有考虑到多个变量.

random partitioning r

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

Spark甚至在分区数据中列出所有叶节点

我有date&hour,文件夹结构分区的镶木地板数据:

events_v3
  -- event_date=2015-01-01
    -- event_hour=2015-01-1
      -- part10000.parquet.gz
  -- event_date=2015-01-02
    -- event_hour=5
      -- part10000.parquet.gz
Run Code Online (Sandbox Code Playgroud)

我已经raw_events通过spark 创建了一个表,但是当我尝试查询时,它会扫描所有目录的页脚,这会减慢初始查询,即使我只查询一天的数据.

查询: select * from raw_events where event_date='2016-01-01'

类似的问题:http://mail-archives.apache.org/mod_mbox/spark-user/201508.mbox/%3CCAAswR-7Qbd2tdLSsO76zyw9tvs-Njw2YVd36bRfCG3DKZrH0tw@mail.gmail.com%3E(但它的旧版本)

日志:

App > 16/09/15 03:14:03 main INFO HadoopFsRelation: Listing leaf files and directories in parallel under: s3a://bucket/events_v3/
Run Code Online (Sandbox Code Playgroud)

然后它产生350个任务,因为有350天的数据.

我已经禁用了schemaMerge,并且还指定了架构来读取,因此它可以转到我正在查看的分区,为什么要打印所有叶子文件?列出具有2个执行程序的叶子文件需要10分钟,查询实际执行需要20秒

代码示例:

val sparkSession = org.apache.spark.sql.SparkSession.builder.getOrCreate()
val df = sparkSession.read.option("mergeSchema","false").format("parquet").load("s3a://bucket/events_v3")
    df.createOrReplaceTempView("temp_events")
    sparkSession.sql(
      """
        |select verb,count(*) from temp_events where event_date = "2016-01-01" group by verb
      """.stripMargin).show()
Run Code Online (Sandbox Code Playgroud)

partitioning amazon-s3 apache-spark parquet apache-spark-sql

15
推荐指数
2
解决办法
5864
查看次数