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行的表会导致内存问题