【问题标题】:loading big csv file to redis将大 csv 文件加载到 redis
【发布时间】:2017-10-11 22:46:03
【问题描述】:

我正在尝试在 redis 数据库中加载一个 csv 文件(该文件有 2700 万行),但它抛出了 'redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out' 的异常

我的代码:

   Jedis jedis = new Jedis();

    try {

        BufferedReader in = new BufferedReader(new FileReader(fileName));

        String line = in.readLine();
        int i =0;
        while (line != null) {
            try{
                String[] edgeDescription = line.split("\\s");
                if (edgeDescription.length >=0) {
                    jedis.hset( String.valueOf(i) ,edgeDescription[0],edgeDescription[1]);
                }
                i++;
            }
            catch (OutOfMemoryError e)
            {

                e.getMessage();
            }


            line = in.readLine();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

【问题讨论】:

    标签: java redis nosql


    【解决方案1】:

    鉴于这组信息,很难回答这个问题。虽然我会尝试给你一些检查:

    • 您在哪里说明要连接到哪个数据库?我没有看到任何主机/端口规范。难道在这种情况下jedis实例会尝试连接到localhost:6379
    • 您的代码是否能够将一些数据写入redis?
    • 如果是,您能否引入一个计数器并计算处理的行数以及写入 DB 的行数?连接超时后,redis 实例会发生什么?它仍然运行并且一切正常吗?
    • 您尝试过redis-cli -h host -p port monitor 命令吗?

    一个小提示:您的代码通常效率不高,您应该使用管道并处理 1000 次左右的写入块,这样会快得多。你考虑过这个吗?

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-06-27
      相关资源
      最近更新 更多