小编Gui*_*lle的帖子

Java基准测试 - 为什么第二个循环更快?

我对此很好奇.

我想检查哪个函数更快,所以我创建了一个小代码,我执行了很多次.

public static void main(String[] args) {

        long ts;
        String c = "sgfrt34tdfg34";

        ts = System.currentTimeMillis();
        for (int k = 0; k < 10000000; k++) {
            c.getBytes();
        }
        System.out.println("t1->" + (System.currentTimeMillis() - ts));

        ts = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            Bytes.toBytes(c);
        }
        System.out.println("t2->" + (System.currentTimeMillis() - ts));

    }
Run Code Online (Sandbox Code Playgroud)

"第二个"循环更快,因此,我认为hadoop中的Bytes类比String类中的函数更快.然后,我改变了循环的顺序,然后c.getBytes()变得更快.我执行了很多次,我的结论是,我不知道为什么,但是在第一个代码执行后我的VM中发生了一些事情,以便第二个循环的结果变得更快.

java performance benchmarking

49
推荐指数
5
解决办法
6260
查看次数

Redis vs RocksDB

我读过Redis和RocksDB,我没有得到Redis优于RocksDB的优势.

我知道Redis全部在内存中,而RocksDB在内存中并使用闪存存储.如果所有数据都适合内存,我应该选择哪一个?他们有相同的表现吗?Redis与CPU的数量呈线性关系?我想还有其他一些我没有得到的差异.

我有一个适合内存的数据集,我打算选择Redis,但似乎RocksDB提供了相同的功能,如果有一天数据集增长太多,我就不必担心内存了.

redis rocksdb

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

Hbase错误.org.apache.hadoop.hbase.client.RetriesExhaustedException:尝试次数= 10后失败,异常

我正在使用Hbase,当我查询Hbase时,我开始遇到一个丑陋的错误.

问题是当我尝试与Hbase建立连接时出现此错误.唯一的问题是我使用线程,,,但实际上并不是太多.

Caused by: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=10, exceptions:
Wed Dec 04 16:09:13 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:14 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:15 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:16 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:18 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:20 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed Dec 04 16:09:24 CET 2013, org.apache.hadoop.hbase.client.HTable$5@7271601f, java.io.IOException: org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@35cc96e8 closed
Wed …
Run Code Online (Sandbox Code Playgroud)

hbase

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

Hbase和HFiles.它如何存储列族?

如果你有一个列族,rowkey的所有列都在同一个HFile中?来自rowkey和同一列族的数据可以混合在不同的HFile中吗?这是因为我认为它们已经分类了,但我读了一本书:

来自单个列族的单行数据不需要存储在同一个HFile中.这就是为什么行可能太宽而且不适合单个HFile?

唯一的要求是在HFile中,行的列族的数据存储在一起.这对我来说似乎有些矛盾.

注意:我一直在阅读有关该主题的一些内容.HBase使用LSM树.我有一个rowkey和一个HFile中的所有数据.之后,我可以添加一些新数据,它们将存储在内存中,当内存已满时,HBase会将这些数据存储在新的 HFile中.所以,我可以在两个HFile中为一个rowkey设置限定符.如果我想对该rowkey进行获取或扫描操作,我将不得不寻找两个文件.随着时间的推移,HBase将执行一个主要的压缩,它将创建一个唯一的HFile加入旧的两个HFile并在压缩后删除它们.所以,如果我想查找该rowkey,我只需要一次搜索.我对吗??我不明白为什么会有轻微和重大的压实,因为他们似乎也这样做.

hbase

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

Solr,如何在schema.xml中定义嵌套文档

我有一个带有嵌套文档的文档,我想为Solr定义模式.我一直在阅读文档,但我不知道如何使用嵌套文档定义schema.xml.

当我尝试索引文档时,addBean我得到一个错误,因为我在模式中没有该字段obj1,我不知道如何定义它.

我正在使用带有@Field注释的java对象.

public class ObjToIndex {
    @Field
    String id;

    @Field
    String name;

    @Field
    ObjToIndex2 obj1;

public class ObjToIndex2 {
    @Field
    String id;
    @Field
    String lastName;
Run Code Online (Sandbox Code Playgroud)

我不知道如何在模式中定义obj1类型为"object"或类似的字段.

java lucene solr

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

SequenceFiles与HAR的vs vs Hadoop中的CombineFileInputFormat

处理小文件的最佳方法是什么?我一直在阅读答案和阅读,我找不到任何真正好的方法来做到这一点.如果我在HDFS中有20Tb的小数据,我该怎么办?如果我要多次处理我的数据,我会把它们变成SequenceFiles,但如果我只处理它们会发生什么呢?

我已经阅读了一些可能性,如果有更多的东西,有人可以纠正我的一些,那就太好了.

SequenceFiles.

缺点:问题是我必须运行mapreduce,所以如果我只想处理一次数据,我认为这不值得.如果我必须运行如此多的mapreduce作为我拥有的文件,为什么我要浪费时间将我的文件转换为SequenceFile?

PROS:它节省了nameNode中的空间,并且实现了一个SequenceInputFormat.

缺点:我有很多mapreduces文件.它在NameNode中花费了太多内存

CombineFileInputFormat

缺点:它在NameNode中花费了太多内存

PROS:它可以按块组合文件,因此我不必执行与文件一样多的映射.

HAR的

缺点:如果我想生成,我必须执行mapreduce作业,与SequenceFiles相同.有些点文件是重复的,所以我需要额外的内存来生成它们,之后我可以删除旧文件.

PROS:我们可以打包文件,我不确定每个HAR是否只有一个mapreduce.

我正在寻找一种方法来打包(如果它可以压缩文件)并且不必执行一个mapreduce每个文件而不执行mapreduce来生成那些"新"文件,同时节省内存在NameNode中.SequenceFiles看起来很不错,但生成它们看起来太昂贵了.

hadoop

5
推荐指数
0
解决办法
586
查看次数

在一行中使用 JSONLayout 在 JSON 中使用 Log4j2 打印堆栈跟踪

我正在尝试使用 Log4j2 配置 JsonLayaout。我想在 JSON 中的一条消息中包含堆栈跟踪。我知道我必须使用“完整”属性。

我创建的示例类是:

public class MyApp {

private static final Logger logger = LogManager.getLogger(MyApp.class);

    public static void main(final String... args) {   
        logger.debug("Entering application.");

        try{
            int i = 0;
            int a = 5 / i;
        }catch(Exception e){
            //StringWriter sw = new StringWriter();
            //e.printStackTrace(new PrintWriter(sw));
            //String exceptionAsString = sw.toString();    
            logger.error(exceptionAsString);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

log4j2.properties 是:

name=PropertiesConfig
property.filename = logs
appenders = file, console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = JSONLayout
appender.console.layout.complete="false"
#appender.console.layout.compact = true
#appender.console.layout.pattern = …
Run Code Online (Sandbox Code Playgroud)

json log4j2

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

在Hbase中禁用大型扫描的阻止缓存

我一直在阅读我应该在Hbase中禁用大块扫描的阻塞缓存.我认为这是因为你在大扫描中获得了更好的性能,因为你没有使用GC并节省了加载块缓存所花费的时间,但我读了人们获得相同性能的基准测试.

我认为,如果我不使用blockcache,我应该获得时间,因为GC不必经常执行.我从Cloudera那里找到了一个关于这个问题的问题,我真的不喜欢测试问题的任何可能的回答,我想这应该是事实.那么,如果你禁用了blockcache,你会获得更好的大型(全表)扫描性能吗?是什么原因?

hbase

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

序列化对象,解析为String并反序列化

我正在尝试序列化和对象,解析为String并反序列化,但它不起作用.当我将byte []解析为String或反之时,我想我错过了一些东西.

String obj = new String(SerializationUtils.serialize(configuration));
Configuration test = (Configuration)SerializationUtils.deserialize(obj.getBytes());
Run Code Online (Sandbox Code Playgroud)

为什么不起作用?

我收到此错误:

org.apache.commons.lang.SerializationException: java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
    at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:168)
    at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:193)
Run Code Online (Sandbox Code Playgroud)

解:

将字节[]编码并加载到Base64

java serialization

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

使用Scala在Intellij中输入类型的变量显示工具提示

有什么方法可以让IntelliJ在使用Scala编程时显示带有变量类型的工具提示?

我知道Eclipse有这个功能.我一直在寻找设置,我没有找到它.

scala intellij-idea

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

Cassandra 单元与 scala。不是会话

我正在尝试使用 cassandraunit 测试 Cassandra。我从 github 粘贴了测试并翻译为 Scala,但它不起作用。

import org.junit.Rule
import org.scalatest.FunSuite
import com.datastax.driver.core.ResultSet
import org.cassandraunit.CassandraCQLUnit
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet

class CassandraTest  extends FunSuite{

  @Rule
  val cassandraCQLUnit = new CassandraCQLUnit(new ClassPathCQLDataSet("statementsWithBlankEndings.cql", "mykeyspace"))

  test("really simple transformation") {

      val session = cassandraCQLUnit.session
      val resultSet = session.execute("select * from testCQLTable  WHERE id='1690e8da-5bf8-49e8-9583-4dff8a570737'")
      println(resultSet.iterator().next().getString("value"))

    }
}


java.lang.NullPointerException was thrown.
java.lang.NullPointerException
    at CassandraTest$$anonfun$1.apply$mcV$sp(CassandraTest.scala:21)
    at CassandraTest$$anonfun$1.apply(CassandraTest.scala:18)
    at CassandraTest$$anonfun$1.apply(CassandraTest.scala:18)
    at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
    at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
    at org.scalatest.Transformer.apply(Transformer.scala:22)
    at org.scalatest.Transformer.apply(Transformer.scala:20)
    at org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186)
    at org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196)
    at org.scalatest.FunSuite.withFixture(FunSuite.scala:1560)
    at org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:183)
    at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
    at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:196)
    at …
Run Code Online (Sandbox Code Playgroud)

scala cassandra

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

通用Scala.没有ClassTag可用于T

我正在尝试在Scala中使用泛型,但在某些情况下它对我不起作用.

我已经将类定义为:

trait Generic[T <: Product] extends Serializable {

   def start(ssc: StreamingContext, conf: Conf) = {
    val dstream = createDirectStream(...)
    val rdd = dstream.map(x => avroToObject(x.value()))
    execute(rdd)
   }

   def execute(dstreamAvro: DStream[T]): Unit
   def avroToObject(bytes: Array[Byte]): T
}
Run Code Online (Sandbox Code Playgroud)

后来,我在特定的类中实现了avroToObject方法.当我尝试编译代码时,我收到一个错误.

Error:(36, 30) No ClassTag available for T
    val rddAvro = dstream.map(x => avroToObject(x.value()))
Error:(36, 30) not enough arguments for method map: (implicit evidence$2: scala.reflect.ClassTag[T])org.apache.spark.streaming.dstream.DStream[T].
Unspecified value parameter evidence$2.
    val rddAvro = dstream.map(x => avroToObject(x.value()))
Run Code Online (Sandbox Code Playgroud)

它发生了什么?我该怎么办呢?

如果我通过以下方式更改了类的声明:

abstract class Generic[T <: Product](implicit c: …
Run Code Online (Sandbox Code Playgroud)

scala

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

Any和泛型之间的区别

我见过这个功能.我用泛型类型创建了这个函数,但我看到了这个解决方案.我不知道是否输入任何更好的args或者有不同的args.

def flatten(ls: List[Any]): List[Any] = ls flatMap {
    case ms: List[_] => flatten(ms)
    case e => List(e)
  }
Run Code Online (Sandbox Code Playgroud)

要么

def flatten(ls: List[A]): List[A]
Run Code Online (Sandbox Code Playgroud)

scala

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