小编afa*_*ncy的帖子

如何在Hadoop中自定义Writable类?

我正在尝试实现Writable类,但是如果在我的类中有嵌套对象,例如list等,我不知道如何实现可写类.任何正文可以帮助我吗?谢谢

public class StorageClass implements Writable{

public String xStr;
public String yStr;

public List<Field> sStor

//omitted ctors


@override
public void write(DataOutput out) throws IOException{
    out.writeChars(xStr);
    out.WriteChars(yStr);

    //WHAT SHOULD I DO FOR List<Field>

}

@override
public void readFields(DataInput in) throws IOException{
    xStr = in.readLine();
    yStr = in.readLine();

    //WHAT SHOULD I DO FOR List<Field>
}

}

public class SubStorage{
    public String x;
    public String y;
}

}
Run Code Online (Sandbox Code Playgroud)

以下是Field类:

public final class Field implements Comparable<Field>, Serializable {

    private String name;
    private DataType dataType; …
Run Code Online (Sandbox Code Playgroud)

java hadoop mapreduce

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

是否有.NET使用的KeyValue存储?

我正在寻找支持C#的keyvalue商店,但我发现其中大部分是由Java实现的.有人可以向我推荐一些吗?如果它非常轻,即出现在图书馆中,它将是超级的.谢谢!!

c# store key-value

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

如何在我的计算机上启用对POPCNT指令/内在函数的支持?

我试图在我的电脑上运行以下程序(Fedora 17 32bit).如何使我的系统支持popcnt快速人口统计指令?

#include <stdio.h>
#include <nmmintrin.h>

int main(void)
{
    int pop = _mm_popcnt_u32(0xf0f0f0f0ULL);
    printf("pop = %d\n", pop);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译了程序并运行它,但得到以下异常:

[xiliu@xiliu tmp]$ gcc -Wall -march=corei7 -m32 -msse4.2 popcnt.c -o popcnt
[xiliu@xiliu tmp]$ ./popcnt 
Illegal instruction (core dumped)
Run Code Online (Sandbox Code Playgroud)

以下是我的处理器的信息:

[xiliu@xiliu tmp]$ cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 15
model name  : Intel(R) Pentium(R) Dual  CPU  T2370  @ 1.73GHz
stepping    : 13
microcode   : 0xa4
cpu MHz     : 800.000
cache …
Run Code Online (Sandbox Code Playgroud)

c x86 gcc sse4 population-count

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

哪个keyvalue商店有最好的表现?

我想两个月前.我找到了一个谷歌的开源项目,可以存储具有高性能的键值对.但我忘了这个名字.有人可以告诉我吗?或者您可以为我提供一些其他建议?我一直在使用BerkerlyDB,但我发现BerkerlyDb对我的程序来说还不够快.但是,berkerylyDB很方便使用,因为它看起来像一个java lib jar,可以无缝地与我的程序集成.我的程序也是用Java编写的.

java database

5
推荐指数
1
解决办法
4630
查看次数

如何在Hadoop中共享全局序列号生成器?

现在我使用Hadoop处理最终将加载到同一个表中的数据.我需要一个共享的序列号生成器来为每一行生成id.现在我使用以下方法生成唯一编号:

1)在HDFS中创建一个文本文件,例如test.seq,用于保存当前的序列号.

2)我使用锁定文件".lock"来控制并发.假设我们有两个并行处理数据的任务.如果task1想要获取该号码,它将检查锁定文件是否存在.如果是,则表示task2正在从test.seq访问该号码,然后task1必须等待.当task2获取了该号码时,它会在返回时通过增加1来覆盖旧号码,并删除锁定文件".lock".当task1看到.lock消失时,task1将首先创建一个".lock"文件,然后以相同的方式获取序列号.

但是,我不确定这种方法是否切实可行.因为我将.lock和test.seq文件保存在HDFS中,即使任务1更改了test.seq的内容,它也可能无法立即被task2识别.当其他任务通过namenode获取有关HDFS中数据的信息时.因此,datanode将首先通知对namenode的更改,然后通知其他任务更改.这是对的吗?

另一个想法是创建在Master上运行的torjan程序.所以,任务获取顺序号是通过RPC Torjan程序.但是如何在主程序上运行Torjan程序?

有人可以给我一些建议吗?谢谢!

java rpc hadoop mapreduce

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

Spark中的低性能reduceByKey()

我正在写一个关于Spark的程序,我只是按键进行聚合.该计划非常简单.我的输入数据只有2GB,在多核服务器(8核,32GB RAM)上运行,设置为local [2].那就是使用两个内核进行并行化.但是,我发现性能非常糟糕.它几乎需要两个小时才能完成.我正在使用KryoSerializer.我想这可能是由Serializer引起的.如何解决这个问题呢?

  val dataPoints = SparkContextManager.textFile(dataLocation)
        .map(x => {
            val delimited = x.split(",")
            (delimited(ColumnIndices.HOME_ID_COLUMN).toLong, 
                delimited(ColumnIndices.USAGE_READING_COLUMN).toDouble)
        })

def process(step: Int): Array[(Long, List[Double])] = {
  val resultRDD = new PairRDDFunctions(dataPoints.map(x =>(x._1, List[Double](x._2))))
  resultRDD.reduceByKey((x, y) => x++y).collect()
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

1, [1, 3, 13, 21, ..., 111] // The size of list is about 4000
2, [24,34,65, 24, ..., 245]
....
Run Code Online (Sandbox Code Playgroud)

performance scala apache-spark

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

如何为这个问题实现这个O(1)算法?

我有变量x,函数f1(x),f2(x),... fn(x)(n最多可达1百万).这些函数的值是1还是0.那么,如何编写算法,可以快速获取返回1的函数?谢谢.

我在这里介绍我的.它具有O(n)时间复杂度,这是不够有效的.

List funHaveTrueValues = new ArrayList();

for (int i=1; i<=n; ++i){
 if (fi(x)==true){
   funHaveTrueValues.add(fi);
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以提出O(1)算法吗?谢谢!

algorithm performance big-o

0
推荐指数
2
解决办法
324
查看次数