为什么当我尝试进行缓存或显示时pyspark无法正常工作

时间:2019-01-09 08:43:01

标签: apache-spark jdbc pyspark

pyspark停在df.cache()和df.show()上。例如,如果我执行df.count(),则可以使用,但是如果我执行df.cache()df.count(),则无法使用。

如果有所作为,我将在本地Mac上运行它,使用jdbc连接到远程psql。

这是我的剧本

import pyspark
from pyspark.sql import SQLContext
from pyspark import SparkContext
from pyspark.sql import DataFrameReader

conf = pyspark.SparkConf().setAll([("spark.driver.extraClassPath", "/usr/local/bin/postgresql-42.2.5.jar"),
                                  ("spark.sql.shuffle.partitions", "4")])
sc = pyspark.SparkContext(conf=conf)
sqlContext = SQLContext(sc)

url = 'postgresql://url_to_remote_machine'
properties = {
              'user': 'user', 
              'password': 'password'}
df = DataFrameReader(sqlContext).jdbc(
    url='jdbc:%s' % url, table='users', properties=properties
)

#df.cache()
df.count()----does not work if i uncomment df.cache()

df.createOrReplaceTempView("users")

sqlDF = sqlContext.sql("SELECT * FROM users limit 10")
sqlDF.count() #this works

sqlDF.show() #this doesnt work

我得到的错误是

ava.lang.OutOfMemoryError: GC overhead limit exceeded

我非常怀疑10行的表会导致内存问题

0 个答案:

没有答案