我在PySpark作业中使用Psycopg2
,我在一个包含所有依赖项的zip文件中提供它。构建脚本执行此操作:
python -m pip install -t build/dependencies -r src/requirements.txt
其中requirements.txt
是
SQLAlchemy
psycopg2
然后拉<{1}},我通过dependencies
将其提供给spark-submit
。当我在EMR上运行作业时,SQLAlchemy导入得很好,但是我收到了这个错误:
--py-files
如果我从需求中删除ImportError: No module named 'psycopg2._psycopg'
并手动将其安装在EMR上(通过psycopg2
),它就可以正常工作了。我的机器和EMR上的Python版本是3.4.7,但我的机器是Mac(而EMR是linux)。
答案 0 :(得分:0)
这对我有用。
df = sqlContext.read.format('jdbc').options(url='jdbc:postgresql:dbserver', dbtable='schema.tablename').load()
sqlalchemy连接对我不起作用。
create_engine("postgresql+psycopg2://user:password@/dbname")
尝试您的数据库连接到sqlcontext,将起作用。