spark处理1153194条记录的mysql表,怎么就内存泄露?

问题描述

frompysparkimportSparkContext,SparkConffrompyspark.sqlimportSQLContextsc=SparkContext("local","SimpleApp")sqlContext=SQLContext(sc)url="jdbc:mysql://localhost:3306/stock_data?user=root&password=test"df=sqlContext.read.format("jdbc").option("url",url).option("dbtable","stock_detail_collect").load()df.printSchema()counts=df.groupBy("stock_id").count()counts.show()===========怎么数据表只有1153194条记录,怎么运行以上代码就内存泄露:16/02/0523:30:28WARNTaskMemoryManager:leak8.3MBmemoryfromorg.apache.spark.unsafe.map.BytesToBytesMap@431395b116/02/0523:30:28ERRORExecutor:Managedmemoryleakdetected;size=8650752bytes,TID=1环境:spark-1.6.0-bin-hadoop2.6Ubuntu14.04.3LTSjdk1.8.0_66不知问题在哪?怎么破,非常感谢

解决方案

解决方案二:
counts=df.groupBy("stock_id").count()counts.show()改为写入文件:df.registerTempTable("people")count=sqlContext.sql("selectstock_id,count(*)ascfrompeoplegroupbystock_idorderbystock_id")fornameincount.collect():file_output.write(str(name))file_output.flush()file_output.close()

时间: 2024-09-20 17:27:31

spark处理1153194条记录的mysql表,怎么就内存泄露?的相关文章

查询分组中每组第一条记录组成的表

表xjgl: id xh fenshu time xh表示 学号 fenshu表示分数 time表示时间 一个xh也就是一个学生对应多条记录,但是我现在想查得每个学生最近一次的记录,其它 记录都不要, 有人想先将此表按学号分组,然后在每一组中取出第一条,组成一个表 但是group by 不能完成此功能 可以用下面方法: select * from xjgl x where id = (select top 1 id from xjgl y where y.xh=x.xh order by sj

获取MySQL的表中每个userid最后一条记录的方法_Mysql

如下表: CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid` (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8: CREATE TABLE `t1` ( `userid` int(11) DEFAULT NULL, `atime` datetime DEFAULT NULL, KEY `idx_userid

mysql使用GROUP BY分组实现取前N条记录的方法_Mysql

本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 复制代码 代码如下: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT J

mysql 批量更新与批量更新多条记录的不同值实现方法_Mysql

批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 复制代码 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可: 复制代码 代码如下:  UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values');  这里注意

mysql 批量更新与批量更新多条记录的不同值

批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写:  代码如下 复制代码 UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可:  代码如下 复制代码  UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values'); 这里注意 '

Mysql limit 优化,百万至千万条记录实现快速分页

可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引.这是一个基本的新闻系统的简单模型.现在往里面填充数据,填充10万篇新闻. 最后collect 为 10万条记录,数据库表占用硬盘1.6

MySQL获取所有分类的前N条记录_Mysql

比如有文章表 Article(Id,Category,InsertDate),现在要用SQL找出每种类型中时间最新的前N个数据组成的集合,一段不错的代码,留存备用 SELECT A1.* FROM Article AS A1 INNER JOIN (SELECT A.Category,A.InsertDate FROM Article AS A LEFT JOIN Article AS B ON A.Category = B.Category AND A.InsertDate <= B.Inse

mysql 一次更新(update)多条记录的思路_Mysql

工作中遇到一个问题:要更新一个数据表. 这个表是我自己创建的,有7个字段,id.name.package等等 创建的时候,因为我把name.package的信息分别存在两个文本文件中, 所以我就用Insert方法,一次性将所有的name插入数据库中. name全部导入数据库中了,但是我的package没有导入,这时我仍然想用insert的方法插入,但是不行. 这时候应该利用update的方法.一次更新多条信息的思路如下: UPDATE table_name SET field_name = CA

MYSQL中获取得最后一条记录的语句_Mysql

在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成"主从表结构",这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后获得自动生成的id,以它为基础插入从表的记录.这里面有个困难,就是插入主表记录后,如何获得它对应的id.通常的做法,是通过"select max(id) from tablename"的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表加以