hadoop - Apache Spark 1.2.1 独立集群给出 java 堆空间错误

标签 hadoop apache-spark

我需要有关如何计算在 spark 独立集群中的 x mb(假设 x 表示 600 mb)上运行需要多少堆空间(内存)的信息。

场景:

我有 14GB 内存和 8 个内核的独立集群。我想对 600 MB 的数据进行操作(从文件中读取数据并将其写入 Cassandra)。

对于此任务,我将 SparkConfig 作为:

.set("spark.cassandra.output.throughput_mb_per_sec","800")

.set("spark.storage.memoryFraction", "0.3")

提交任务时--executor-memory=5g --total-executor-cores 6 --driver-memory 6g。

尽管有上述配置,但我在向 Cassandra 写入数据时出现 Java 堆空间错误。

下面是java代码:

    public static void main(String[] args) throws Exception {
    String fileName = args[0];

    Long now = new Date().getTime();

    SparkConf conf = new SparkConf(true)
            .setAppName("JavaSparkSQL_" +now)
            .set("spark.cassandra.connection.host", "192.168.1.65")
            .set("spark.cassandra.connection.native.port", "9042")
            .set("spark.cassandra.connection.rpc.port", "9160")
            .set("spark.cassandra.output.throughput_mb_per_sec","800")
            .set("spark.storage.memoryFraction", "0.3");

    JavaSparkContext ctx = new JavaSparkContext(conf);


    JavaRDD<String> input =ctx.textFile    
("hdfs://abc.xyz.net:9000/figmd/resources/" + fileName, 12);
    JavaRDD<PlanOfCare> result = input.mapPartitions(new 
ParseJson()).filter(new PickInputData());

    System.out.print("Count --> "+result.count());
    System.out.println(StringUtils.join(result.collect(), ","));


 javaFunctions(result).writerBuilder("ks","pt_planofcarelarge",
 mapToRow(PlanOfCare.class)).saveToCassandra();

}

我应该做什么配置?我错过了什么吗? 提前致谢。

最佳答案

JavaRDD collect 方法返回一个包含此 RDD 中所有元素的数组。

因此在您的情况下,它将创建一个包含 340000 个元素的数组,这将导致 Java 堆错误,您可能需要对数据进行少量采样并收集 code> 它或者你可能想将它直接保存到你的磁盘。

有关 JavaRDD 的更多信息,您可以随时引用 official documentation .

关于hadoop - Apache Spark 1.2.1 独立集群给出 java 堆空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29920579/

相关文章:

hadoop - 获取主持人进行Hadoop工作

java - flink 文档中给出的代码无法编译

java - 使用 Apache Spark 将 RDD 写入文本文件

python - 从 Pyspark 列中获取值并将其与 Python 字典进行比较

apache-spark - Spark 数据帧十进制精度

python - spark posexplode 函数运行速度很慢

scala - Spark : Euclidean distance element-wise between two columns of vectors

hadoop - Hadoop:Reducer未被调用

python - PySpark 和访问 HDFS

hadoop - 以不同用户身份运行 map reduce 作业