"设备上没有剩余空间",Spark作业终止:stackoverflow中没有正确的解决方案

时间:2016-12-07 04:48:46

标签: java apache-spark pyspark apache-spark-sql pyspark-sql

如果我在任何奴隶或主设备上执行df -h,我有以下文件结构

  Filesystem            Size  Used Avail Use% Mounted on
    /dev/xvda1            7.9G  4.4G  3.5G  57% /
    tmpfs                 7.4G  4.0K  7.4G   1% /dev/shm
    /dev/xvdb              37G  3.3G   32G  10% /mnt
    /dev/xvdf              37G  2.0G   34G   6% /mnt2
    /dev/xvdv             500G   33M  500G   1% /vol0

我的spark-env.sh看起来像这样

export SPARK_WORKER_DIR="/vol0"
export SPARK_WORKER_CORES=2
export SPARK_WORKER_OPTS="-Dspark.local.dir=/vol0"
export SPARK_LOCAL_DIRS="/vol0/"

但我仍在接受"设备上没有空间"保存文件时错误和作业终止。

我有一个数据集有200个文件,每个文件各1GB,另一个数据集有200个文件,每个文件有45MB。我正在加入他们并在s3中保存到新文件。

DataFrame dataframe1= sqlContext.read().format("json").json(outputGrowth).coalesce(50);
        dataframe1.registerTempTable("dataframe1");



        DataFrame dataframe2 = sqlContext.read().format("json").json(pdiPath);
        dataframe2.registerTempTable("dataframe2");

        //Joining two tables
        String query = "join dataframe1 and dataframe2";
        DataFrame resultPDI = sqlContext.sql(query);
        dataPDI.unpersist();
        growthData.unpersist();
        resultPDI.write().mode("overwrite").json(outputPDI);

那么,我如何设置我的火花来存储数据/ vol0而不是其他文件/ mnt / spark。

我尝试过stackoverflow的不同解决方案,有些博客没有任何解决方案适合我。

任何人都可以帮助我摆脱这个问题。我在Aws服务器中使用10个设备m1.large。

1 个答案:

答案 0 :(得分:1)

如果您使用的是ubuntu,可以创建cimply为/ mnt / spark创建符号链接到/ val0

ln -s /val0 /mnt/spark

所以在symblink的帮助下你可以用/ mnt / spark来引用/ val0。有关详细信息,请转到以下链接http://ubuntuhak.blogspot.in/2013/04/symbolic-links-in-ubuntu.html