前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@27ce24aa is still active.

java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@27ce24aa is still active.

作者头像
翎野君
发布2023-05-12 19:50:45
3170
发布2023-05-12 19:50:45
举报
文章被收录于专栏:翎野君翎野君

在Sqoop往mysql导出数据的时候报了这个错误,一开始还以为是jar包没有打进去或者打错位置了,未解便上网查询。

代码语言:javascript
复制
Error reading from database: java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@27ce24aa is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@27ce24aa is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.

1.通过百度寻找此问题的解决方式,找到了如下答案:

由于mysql-connector-java的bug造成的,出错时我用的是mysql-connector-java-5.1.12-bin.jar,更新成mysql-connector-java-5.1.32-bin.jar就可以了。

但是我通过wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.32.tar.gz,下载了tar.gz包 解压之后得到mysql-connector-java-5.1.32-bin.jar

注意mysql-connector-java-5.1.32-bin.jar,看见没有是-bin.jar,maven项目的pom.xml中添加mysql依赖,会产出mysql-connector-java-5.1.32.jar 没有-bin,注意这是两个不同的包。

千万不要直接从项目中拷过来。。。最后替换掉sqoop目录原有jar包,我的目录是/opt/software/sqoop/lib/

但是!!!并没有解决这个问题。。。

2. 访问国外网站

老大看我焦头烂额却没有丝毫进展,告知我要访问国外网站,这种问题要到墙外查阅资料。我也知道,但是最近v**好笑来月经了似的翻不出去了。。。

大哥最后出马,在StackOverFlow上找到了答案:

Try including the option --driver com.mysql.jdbc.Driver in the import command.

Worked for me...Thanks Man

代码语言:javascript
复制
sqoop export \
--connect $STAT_JDBC_CONNECT \
--username $JDBC_USERNAME \
--password $JDBC_PASSWORD \
--table $TABLE \
--update-mode allowinsert \
--driver com.mysql.jdbc.Driver \
--export-dir $SQOOP_HDFS_RESULT_DAY \
--columns stat_ds,command,answer,counts

3.解决这个问题,便深知访问国外网站的重要性,便开始研究v**为何失效翻不过去长城?

我用的工具ShadowSocks,找了半天没有类似的经验,就把电脑关机。重启之后在没有改任何配置的前提下就好了!

4.SparkSql中使用round内置函数完成四舍五入保留两位小数

代码语言:javascript
复制
  /**
    * 统计音箱型号分布情况
    *
    * @param dataFrame
    * @return
    */
  def echoModelDistributeStat(dataFrame: DataFrame, preDay: String): List[String] = {
    var numdf = dataFrame.groupBy("model").agg(count("model").as("model_count"))
    // 统计出总共的设备数
    var sumdf = numdf.groupBy().agg(sum("model_count"))
    // 计算设备型号的总数量
    var modelSum = sumdf.collect()(0)(0)
    // 计算出需要的的DF
    var modelInfo = numdf.select(numdf("model"), numdf("model_count"), (numdf("model_count") / modelSum * 100).as("model_percent"))
    modelInfo.registerTempTable("m")
    // 将日期转换为时间戳
    val timeStamp = TimeUtils.getTimeStamp(preDay + " " + Constant.TIME_ZERO)
    val timeDf = modelInfo.sqlContext.sql("select " + timeStamp + " as stat_ds,m.model,m.model_count,round(m.model_percent,2) as model_percent from m")
    // 将DF转成List[Row]的形式
    val list = timeDf.collect().toList
    // 将List[Row]转为List[String]
    val listStr = listRowConvertListStr(list)
    return listStr
  }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Sqoop往mysql导出数据的时候报了这个错误,一开始还以为是jar包没有打进去或者打错位置了,未解便上网查询。
  • 1.通过百度寻找此问题的解决方式,找到了如下答案:
    • 但是!!!并没有解决这个问题。。。
    • 2. 访问国外网站
    • Try including the option --driver com.mysql.jdbc.Driver in the import command.
    • Worked for me...Thanks Man
    • 3.解决这个问题,便深知访问国外网站的重要性,便开始研究v**为何失效翻不过去长城?
    • 4.SparkSql中使用round内置函数完成四舍五入保留两位小数
    相关产品与服务
    云数据库 MySQL
    腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档