最近使用SparkSQL做数据的打平操作,就是把多个表的数据经过关联操作导入到一个表中,这样数据查询的过程中就不需要在多个表中查询了,在数据量大的情况下,这样大大提高了查询效率。

 
我启动了thriftserver,然后通过beeline去连接thriftserver, 打平操作进行的很顺利,但是在执行groupby操作的时候beeline报了一个错误:gc overhead limit exceeded
我分析可能是thriftserver报的错误。但是查看了thriftserver的日志没有任何异常打出来,没办法重新执行该sql ,通过jmap跟了下,JVM的old区一直没有满,那就是不是thriftserver的问题了。
 
那么可能就是beeline的问题了,jmap跟了一下 ,beeline只有512m的内存,old区满满的。
 
下面就可以着手调整beeline的参数设置,我调整了java_opts, spark_daemon_memory,spark_driver_memory, spark_java_opts.统统不行,看了1.4.1的源码。是程序的问题,
幸好在spark 1.5中fix这个问题了。
 
查看SparkClassCommandBuilder的源码
  1. if (className.equals("org.apache.spark.deploy.master.Master")) {
  2. javaOptsKeys.add("SPARK_DAEMON_JAVA_OPTS");
  3. javaOptsKeys.add("SPARK_MASTER_OPTS");
  4. memKey = "SPARK_DAEMON_MEMORY";
  5. } else if (className.equals("org.apache.spark.deploy.worker.Worker")) {
  6. javaOptsKeys.add("SPARK_DAEMON_JAVA_OPTS");
  7. javaOptsKeys.add("SPARK_WORKER_OPTS");
  8. memKey = "SPARK_DAEMON_MEMORY";
  9. } else if (className.equals("org.apache.spark.deploy.history.HistoryServer")) {
  10. javaOptsKeys.add("SPARK_DAEMON_JAVA_OPTS");
  11. javaOptsKeys.add("SPARK_HISTORY_OPTS");
  12. memKey = "SPARK_DAEMON_MEMORY";
  13. } else if (className.equals("org.apache.spark.executor.CoarseGrainedExecutorBackend")) {
  14. javaOptsKeys.add("SPARK_JAVA_OPTS");
  15. javaOptsKeys.add("SPARK_EXECUTOR_OPTS");
  16. memKey = "SPARK_EXECUTOR_MEMORY";
  17. } else if (className.equals("org.apache.spark.executor.MesosExecutorBackend")) {
  18. javaOptsKeys.add("SPARK_EXECUTOR_OPTS");
  19. memKey = "SPARK_EXECUTOR_MEMORY";
  20. } else if (className.equals("org.apache.spark.deploy.ExternalShuffleService") ||
  21. className.equals("org.apache.spark.deploy.mesos.MesosExternalShuffleService")) {
  22. javaOptsKeys.add("SPARK_DAEMON_JAVA_OPTS");
  23. javaOptsKeys.add("SPARK_SHUFFLE_OPTS");
  24. memKey = "SPARK_DAEMON_MEMORY";
  25. } else if (className.startsWith("org.apache.spark.tools.")) {
  26. String sparkHome = getSparkHome();
  27. File toolsDir = new File(join(File.separator, sparkHome, "tools", "target",
  28. "scala-" + getScalaVersion()));
  29. checkState(toolsDir.isDirectory(), "Cannot find tools build directory.");
  30. Pattern re = Pattern.compile("spark-tools_.*\\.jar");
  31. for (File f : toolsDir.listFiles()) {
  32. if (re.matcher(f.getName()).matches()) {
  33. extraClassPath = f.getAbsolutePath();
  34. break;
  35. }
  36. }
  37. checkState(extraClassPath != null,
  38. "Failed to find Spark Tools Jar in %s.\n" +
  39. "You need to run \"build/sbt tools/package\" before running %s.",
  40. toolsDir.getAbsolutePath(), className);
  41. javaOptsKeys.add("SPARK_JAVA_OPTS");
  42. } else {
  43. javaOptsKeys.add("SPARK_JAVA_OPTS");
  44. memKey = "SPARK_DRIVER_MEMORY";
  45. }

看46.47的代码,1.5可以通过SPARk_JAVA_OPTS和SPARK_DRIVER_MEMORY来设置beeline的内存

Spark 1.4.1中Beeline使用的gc overhead limit exceeded的更多相关文章

  1. Spark OOM:java heap space,OOM:GC overhead limit exceeded解决方法

    问题描述: 在使用spark过程中,有时会因为数据增大,而出现下面两种错误: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMe ...

  2. Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法

    引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246 ...

  3. myeclipse中解决 java heap space/gc overhead limit exceeded eclipse 的方法

    在Eclipse打包的时候报错:gc overhead limit exceeded eclipse 原因是Eclipse默认配置内存太小须要更改安装Eclipse目录下的eclipse.ini文件. ...

  4. spark异常篇-OutOfMemory:GC overhead limit exceeded

    执行如下代码时报错 # encoding:utf-8 from pyspark import SparkConf, SparkContext from pyspark.sql import Spark ...

  5. OutOfMemoryError: Java heap space和GC overhead limit exceeded在Ant的Build.xml中的通用解决方式

    这个仅仅是一点点经验,总结一下,当中前两个相应第一个Error.后两个相应第二个Error,假设heap space还不够.能够再改大些. <jvmarg value="-Xms512 ...

  6. spark aggregateByKey 时 java.lang.OutOfMemoryError: GC overhead limit exceeded

    最后发现有一个用户单日访问我们网站次数为 4千万,直接导致 aggregate 时内存不够.过滤掉该用户即可.

  7. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  8. Apache Spark 2.2.0 中文文档

    Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...

  9. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

随机推荐

  1. 真机环境spotlight光源丢失

    maya做好的模型生成的fbx,导入到unity之后,pc运行正常,到了ios真机上发现光线丢失,场景内物体都是暗暗的,查出来原因是spot光源丢失了,选中spot光源,在其Render Mode里, ...

  2. 欧拉函数 and 大数欧拉 (初步)

    前两天总结了素数筛法,其中就有Eular筛法.现在他又来了→→ φ(n),一般被称为欧拉函数.其定义为:小于n的正整数中与n互质的数的个数. 毕竟是伟大的数学家,所以以他名字命名的东西很多辣. 对于φ ...

  3. Spring框架环境搭建

    环境要求:jdk  1.7 及以上.Spring版本:4.3.2 1.建立普通的java 工程 2.新建lib目录,并将一下5个核心jar包拷贝过来,并加入classpath中 下载地址: http: ...

  4. MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

    原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了, ...

  5. SQL夯实基础(四):子查询及sql优化案例

    首先我们先明确一下sql语句的执行顺序,如下有前至后执行: (1)from  (2) on   (3) join  (4) where  (5)group by  (6) avg,sum...  (7 ...

  6. 杂项之python利用pycrypto实现RSA

    杂项之python利用pycrypto实现RSA 本节内容 pycrypto模块简介 RSA的公私钥生成 RSA使用公钥加密数据 RSA使用私钥解密密文 破解博客园登陆 pycrypto模块简介 py ...

  7. PHP:json_encode 保持中文不被转为ASCII码

    echo json_encode(array('黄河之水天上来'),JSON_UNESCAPED_UNICODE);

  8. HTML5两个打包工具

    AppCan:http://www.appcan.cn/ HBulider:http://www.dcloud.io/

  9. java代码流类

    总结:读取到的是字节型转换成字符串. package com.c2; import java.io.*; public class tkrp { public static void main(Str ...

  10. 2018年长沙理工大学第十三届程序设计竞赛 Dzzq的离散数学教室1

    Dzzq的离散数学教室1 链接:https://www.nowcoder.com/acm/contest/96/D来源:牛客网 zzq的离散数学教室1 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...