hive报错 spark_Spark读取Hive报错:java.lang.outofmemoryerror: java heap space

Spark本地测试Hive数据时,报错:

java.lang.outofmemoryerror: java heap space

因为是本地测试,内存足够,所以IDEA中增大内存。Run/Bebug Configurations 中 VM options 设置 -Xmx2048m,问题同样。

基本排除了是内存不足的问题,可能存在问题的地方。

1. AppName

检查 Spark 配置,因为偷懒配置是直接拷贝其他类的,发现 appName 设置错误,改成当前类。

读简单的表没有问题解决,但是读复杂的表问题同样。

SparkSession.builder().appName(s"${this.getClass.getSimpleName}")

2. Master

继续检查。因为本地测试,master 为 local 模式,直接调用了常量类设置的好的 Constants.SPARK_LOCAL_MODE。

查看设置成了 local[4],删除,使用全部核心进程处理。再运行,问题解决。

val SPARK_LOCAL_MODE = "local"

可以看出,有时候报内存堆栈问题并非都是内存不足。

object SdkUserBehaviorDaily {

private val warehouseLocaion: String = new File("spark-warehouse").getAbsolutePath

def main(args: Array[String]): Unit = {

Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN)

Logger.getLogger("org.apache.spark").setLevel(Level.WARN)

Logger.getLogger("org.spark_project.jetty").setLevel(Level.WARN)

// 数据分析日期,格式为2019-09-19,默认为当日

var time = DateUtils.getYesterdayDate

if (args.length == 1) {

time = args(0)

}

val spark = initSparkSession

val db = "sm_data"

val table = "ods_tb_sdk_user_behavior_log"

val sqlStr =

s"""

| select

| `PACKAGE_ID`,`GAME_ID`,`SDK_VERSION`,`PAGE`,`EVENT_ID`,`RESULT`,`REASON`,

| COUNT(`TIME`) AS `TIME_COUNT`,

| COUNT(DISTINCT `DEVICE_CODE`) AS `DEVICE_COUNT`,

| COUNT(DISTINCT `CORE_ACCOUNT`) AS `ACCOUNT_COUNT`

| from $db.$table

| WHERE `DATE`= $time

| GROUP BY `PACKAGE_ID`,`GAME_ID`,`SDK_VERSION`,`PAGE`,`EVENT_ID`,`RESULT`,`REASON`

""".stripMargin

import spark.sql

sql(sqlStr).show()

spark.stop()

}

def initSparkSession:SparkSession = SparkSession.builder()

.appName(s"${this.getClass.getSimpleName}")

.master(Constants.SPARK_LOCAL_MODE)

.config("spark.sql.warehouse.dir", warehouseLocaion)

.config("hive.exec.dynamic.partition", "true")

.config("hive.exec.dynamic.partition.mode", "nonstrict")

.config("hive.exec.max.dynamic.partitions", 2000)

.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")

.config("spark.kryoserializer.buffer", "1024m")

.config("spark.kryoserializer.buffer.max", "2046m")

.config("spark.io.compression.codec","snappy")

.config("spark.sql.codegen", "true")

.config("spark.sql.unsafe.enabled", "true")

.config("spark.shuffle.manager", "tungsten-sort")

.enableHiveSupport()

.getOrCreate()

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值