我写了下面的代码:
import pyspark
def getHub(sc, ClientId):
sqlContext = pyspark.sql.SQLContext(sc)
return sqlContext.table("myTable").where("ClientId = "+ClientId)
sc = pyspark.SparkContext()
df = getHub(sc, 1).union(getHub(sc, 2))
我知道我不能创建几个SparkContext
,但是创建几个SQLContext
有问题吗?或者最好只创建1SQLContext
,然后将其作为arg传递?你知道吗
TL;DR如果要避免传递上下文,请使用
SparkSession.builder.getOrCreate
。除非要实现名称空间(函数、临时视图)的隔离,否则没有理由维护多个会话)。你知道吗性能方面
每个上下文都是一个具有自己的目录和状态的重量级资源,因此您可能希望避免创建过多的实例。你知道吗
可用性方面:
这是:
通常不会工作,因为表只存在于特定目录的上下文中,并且标准
SQLContext
使用不能共享的derby实例。你知道吗如果满足以下条件,这可能会起作用:
HiveContext
/SparkSession
)。你知道吗mytable
是一个表或全局临时视图。你知道吗API方面:
SQLContext
仅用于遗留原因,不应在新应用程序中使用。你知道吗相关问题 更多 >
编程相关推荐