我正在尝试访问蜂箱拼板表,并将其加载到Pandas数据帧中。我使用的是pyspark,我的代码如下所示:
import pyspark
import pandas
from pyspark import SparkConf
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import HiveContext
conf = (SparkConf().set("spark.driver.maxResultSize", "10g").setAppName("buyclick").setMaster('yarn-client').set("spark.driver.memory", "4g").set("spark.driver.cores","4").set("spark.executor.memory", "4g").set("spark.executor.cores","4").set("spark.executor.extraJavaOptions","-XX:-UseCompressedOops"))
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)
results = sqlContext.sql("select * from buy_click_p")
res_pdf = results.toPandas()无论我更改为conf参数,它都是连续失败的,每次都会以Java堆的形式失败:
线程“任务-结果-getter-2”java.lang.OutOfMemoryError中的异常: Java堆空间
以下是有关环境的其他一些信息:
Cloudera CDH version : 5.9.0
Hive version : 1.1.0
Spark Version : 1.6.0
Hive table size : hadoop fs -du -s -h /path/to/hive/table/folder --> 381.6 M 763.2 M
Free memory on box : free -m
total used free shared buffers cached
Mem: 23545 11721 11824 12 258 1773发布于 2017-06-01 21:09:26
我原来的堆空间问题现在已经解决了,似乎我的驱动程序内存不是最佳的。由于容器当时已经创建了,因此我不得不在CDH管理器控制台中将其设置为spark环境属性,因此,从吡火花客户端设置驱动程序内存不会生效。为此,我转到Cloudera > Spark > Configuration > Gateway >(安全阀),用于火花-conf/火花-defaults.conf,我添加了spark.driver.memory=10g,并解决了Java堆问题。我认为当您在Yarn-客户端上运行星火应用程序时,这将是可行的。
然而,在spark作业完成后,应用程序挂在toPandas上,有人知道需要设置哪些特定属性来转换toPandas数据吗?
-Rahul
发布于 2018-08-27 11:19:50
我也有过同样的问题。在我更改了驱动程序内存后,它对我起作用了。我的代码中有一组:
spark = SparkSession.builder.appName("something").config("spark.driver.memory","10G").getOrCreate()我设置为10G,但这取决于您的环境,您的集群有多大。
https://stackoverflow.com/questions/44295182
复制相似问题