前几天有人通过电子邮件向我询问了一个关于整数分区的问题(因为我发布了一个Perl模块,Integer :: Partition来生成它们),我无法回答.
背景:这里是7的所有整数分区(每行的总和等于7).
7
6 1
5 2
5 1 1
4 3
4 2 1
4 1 1 1
3 3 1
3 2 2
3 2 1 1
3 1 1 1 1
2 2 2 1
2 2 1 1 1
2 1 1 1 1 1
1 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
现在,如果我们查看每个分区的长度并计算每个分区的长度:
1 1
2 3
3 4
4 3
5 2
6 1
7 1
Run Code Online (Sandbox Code Playgroud)
...我们看到一个分区的长度为1(7),一个分区的长度为7(1 1 1 1 1 1 1).有4个分区长度为3:(5 …
我在用R.编程.我有一个包含,比如1000个值的向量.现在让我们说我想将这1000个值随机分成两个新的集合,一个包含400个值,另一个包含600个.我怎么能这样做?我想过做这样的事......
firstset <- sample(mydata, size=400)
Run Code Online (Sandbox Code Playgroud)
...但是这不会对数据进行分区(换句话说,我仍然不知道要在另一组中放入哪600个值).我还想过从1到400的循环,一次随机删除1个值并将其放入firstset.这会正确地划分数据,但是如何实现这一点对我来说并不清楚.另外,我被告知尽可能避免forR中的循环.
有任何想法吗?
自昨天站在超市的销售点以来,再一次试图在试图忽略我身后不耐烦和紧张的队列的同时试图找到我的硬币的最佳分区时,我一直在思考潜在的算法问题:
给定一个值为v 1,...,v n的硬币系统,有限的硬币库存a 1,...,a n和我们需要支付的金额.我们正在寻找一种算法来计算分区x 1,...,x n(0 <= x i <= a i)x 1*v 1 + x 2*v 2 + ... + x n*v n > = s使得和x 1 + ... + x n -R(r)最大化,其中r是变化,即r = x 1*v 1 + x 2*v 2 +. .. + x n*v n - s和R(r)是从收银员返回的硬币数量.我们假设出纳员拥有无限量的所有硬币并且总是返回最小数量的硬币(例如使用SCHOENING等人中解释的贪婪算法).我们还需要确保没有钱的变化,所以最好的解决方案不是简单地给所有的钱(因为在这种情况下解决方案总是最优的).
感谢您的创意投入!
我想使用LINQ将C#中的序列拆分为一系列序列.我做了一些调查,我发现的最接近的SO文章与此略有关系.
但是,这个问题只询问如何根据常量值对原始序列进行分区.我想根据操作对我的序列进行分区.
具体来说,我有一个包含十进制属性的对象列表.
public class ExampleClass
{
public decimal TheValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
假设我有一个序列ExampleClass,并且相应的值序列TheValue是:
{0,1,2,3,1,1,4,6,7,0,1,0,2,3,5,7,6,5,4,3,2,1}
Run Code Online (Sandbox Code Playgroud)
我想将原始序列划分为IEnumerable<IEnumerable<ExampleClass>>具有TheValue类似值的值:
{{0,1,2,3}, {1,1,4,6,7}, {0,1}, {0,2,3,5,7}, {6,5,4,3,2,1}}
Run Code Online (Sandbox Code Playgroud)
我只是迷失了如何实现这一点.那么,你能帮忙吗?
我现在有一个非常难看的解决方案,但有一种"感觉",LINQ将增加我的代码的优雅.
我已经定义了类似于以下的Haskell类型:
data TypeData = TypeA Int | TypeB String | TypeC Char deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
在某些时候,我需要一种方法来过滤[TypeData]所有非TypeC实例.我想写的函数的签名是:
-- Returns a tuple containing (TypeC elements, non-TypeC elements)
partitionTypeCs :: [TypeData] -> ([TypeData],[TypeData])
Run Code Online (Sandbox Code Playgroud)
该partition功能似乎适合这个:
-- Attempt:
partitionTypeCs data = partition (TypeData -> Bool) data
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚哪种函数与类型签名相匹配TypeData -> Bool.看起来我需要一个可以确定类型实例是否属于特定实例的函数.我知道我可以通过编写另一个函数(isTypeC (TypeC _) = True)来使用模式匹配,但是有更通用的方法或匹配类型实例的线条方式吗?
您好问我的问题:Windows Azure表访问延迟分区键和行键选择有关我在Azure存储帐户中组织数据的方式.我有一个表存储方案,旨在存储有关实体的信息.
大约有4000到5000个实体.有6种实体类型,类型大致均匀分布.每个大约800'.
ParitionKey:entityType-Date
行键:entityId
作为问题的详细信息,我遇到了延迟问题,查询多个分区似乎需要一段时间.
基本上一种可能的解决方案是查询以下内容:
PartitionKey>'EntityType-Date'和PartitionKey <EntityType-HighDate'和RowKey ='EntityId'
这在Window Azure存储资源管理器中似乎不起作用.它似乎没有认识到大于小于,我有点期待.
我的问题究竟是什么比工作更少,更好,我会更好地按表格类型分割我的实体.因此我的查询将是?或者我应该采用不同的方法?
PartitionKey> LowDate和PartitionKey <HighDate和RowKey ='EntityId'
我正在使用DataSet API在Flink上使用Scala。我想在节点之间重新划分数据。Spark具有让用户使用给定numberOfPartitions参数(link)对数据进行重新分区的功能,我相信Flink不支持该功能。因此,我想通过实现自定义分区功能来实现这一目标。
我的数据类型为DataSet(Double,SparseVector)来自数据的示例行:
(1.0 SparseVector((2024,1.0), (2025,1.0), (2030,1.0), (2045,1.0), (2046,1.41), (2063,1.0), (2072,1.0), (3031,1.0), (3032,1.0), (4757,1.0), (4790,1.0), (177196,1.0), (177197,0.301), (177199,1.0), (177202,1.0), (1544177,1.0), (1544178,1.0), (1544179,1.0), (1654031,1.0), (1654190,1.0), (1654191,1.0), (1654192,1.0), (1654193,1.0), (1654194,1.0), (1654212,1.0), (1654237,1.0), (1654238,1.0)))
Run Code Online (Sandbox Code Playgroud)
由于“ Double”是二进制(1或-1),因此我想根据SparceVector的长度对数据进行分区。我的自定义分区器如下:
class myPartitioner extends Partitioner[SparseVector]
{
override def partition(key: SparseVector, numPartitions: Int): Int = {
key.size % numPartitions
}
}
Run Code Online (Sandbox Code Playgroud)
我将此自定义分区称为:
data.partitionCustom(new myPartitioner(),1)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解在Scala中调用myPartitioner函数时如何将分区数指定为“ numPartitions”参数。
谢谢。
我正在尝试获取一个数据集并将其划分为3个部分:训练:60%,测试:20%,验证:20%。
part1 <- createDataPartition(fullDataSet$classe, p=0.8, list=FALSE)
validation <- fullDataSet[-part1,]
workingSet <- fullDataSet[part1,]
Run Code Online (Sandbox Code Playgroud)
当我做同样的事情再次分区时:
inTrain <- createDataPartition(workingSet$classe, p=.75, list=FALSE)
Run Code Online (Sandbox Code Playgroud)
我得到错误:
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
Run Code Online (Sandbox Code Playgroud)
有没有一种方法要么a)创建3个不同大小的分区,要么b)像我尝试做的那样嵌套一个分区?我考虑过c)使用sample()代替,但这是针对讲师仅使用createDataPartition的类,并且我们必须显示代码。有人在这里有什么建议吗?
作为安全产品的一部分,我拥有大规模云服务(azure worker 角色),它从事件中心读取事件,将它们分批处理到 ~2000 并存储在 blob 存储中。每个事件都有一个 MachineId(发送它的机器)。事件以随机顺序来自事件中心,我以随机顺序将它们存储在 blob 存储中。吞吐量高达 125K 事件/秒,每个事件约为 2K,因此我们有高达 250MB/秒的流量。我们有大约 100 万台机器...
稍后,另一个云服务下载 blob 并对事件运行一些检测逻辑。他按 MachineId 对事件进行分组,并尝试从机器时间线中了解某些内容
问题是今天来自同一台机器的事件被填充到不同的 blob。如果我可以通过它们的 MachineId 以某种方式对事件进行分组,并确保机器的某个时间窗口填充到相同的 blob,这将增加我可以在云中进行的检测。
我们确实将事件写入另一个 Map reduce 系统,并且在那里我们正在做很多复杂的检测,但那些当然具有高延迟。如果我可以在云中更好地对事件进行分组,我就可以实时捕获更多信息
我有什么技术可以帮助我吗?
提前致谢
根据 Apache Flink 文档,KeyBy 转换在逻辑上将流划分为不相交的分区。所有具有相同键的记录都被分配到同一个分区。
KeyBy是100%逻辑转换吗?它不包括跨集群节点分布的物理数据分区吗?如果是这样,那么如何保证所有具有相同键的记录都分配到同一个分区呢?
例如,假设我们从 n 个节点的 Apache Kafka 集群获取分布式数据流。运行我们的流作业的 Apache Flink 集群由 m 个节点组成。当对传入数据流应用 keyBy 转换时,它如何保证逻辑数据分区?或者它是否涉及跨集群节点的物理数据分区?
我似乎对逻辑数据分区和物理数据分区感到困惑。
distributed-computing data-partitioning apache-flink flink-streaming