scala - 将HDFS文件读取为字符串的最佳方法?

标签 scala hadoop apache-spark hdfs

目前,我有以下代码。

        try
        {           
            FileSystem fs = FileSystem.get(config);
            StringBuilder builder=new StringBuilder();
            byte[] buffer=new byte[4096];
            int bytesRead;

            FSDataInputStream in = fs.open(new Path(fname));
            while ((bytesRead = in.read(buffer)) > 0) 
                builder.append(new String(buffer, 0, bytesRead));
            in.close();

            return builder.toString();
        }
        catch (IOException ex) 
        {
            ex.printStackTrace();
            return "";
        }

如您所见,我已经为缓冲区分配了4096个字节。现在,由于HDFS块为64 MB,分配大小为64 MB的缓冲区会更好吗?鉴于我的HDFS文件大小> 64 MB,什么是最有效的写方法。

最佳答案

您可以读取HDFS属性值以具有正确的缓冲区大小“dfs.stream-buffer-size”。

关于scala - 将HDFS文件读取为字符串的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38032835/

相关文章:

hadoop - 当使用更多节点时,Hadoop无法创建足够的容器

scala - 为什么 Scala 的 Future.onComplete 需要一个 ExecutionContext

scala - 升级了spark版本,在spark作业中遇到java.lang.NoSuchMethodError : scala. Product.$init$(Lscala/Product;)V

scala - 为什么我不能在代码块中递归地定义变量?

Hadoop 使用文件夹结构作为输入

apache-spark - 在独立集群上运行 spark shell 时出现太大的帧错误

scala - 在 Spark RDD Println Error 中,如何显示 [Ljava.lang.String;@8e6606 等数据

scala - Spark-在分组和收集期间跨列维护数据顺序

scala - 如何从日期字符串中提取年份?

apache-spark - 触发堆内存配置和钨