如何使用pyodbc将pandas数据帧写入HDFS集群



我正在使用DSN将本地python连接到HDFS集群:

import pyodbc    
with pyodbc.connect("DSN=CDH_HIVE_PROD", autocommit=True) as conn:
df = pd.read_sql("""Select * from table1""", conn)
df

如何将此表作为"table1tmp"写回集群?我需要一个create语句来首先创建表吗?然后我如何插入熊猫数据帧中的数据?

我认为这是一件非常频繁的事情,它应该很容易做到(提取数据、做某事、保存数据(,但我找不到任何使用pyodbc或DSN的例子,这似乎是我唯一的连接方式。

我们也遇到了类似的问题。感谢对SQLAlchemy的评论,我们找到了一个可行的解决方案:

def my_create_engine(mydsn, mydatabase, **kwargs):
connection_string = 'mssql+pyodbc://@%s' % mydsn
cargs = {'database': mydatabase}
cargs.update(**kwargs)
e = sqlalchemy.create_engine(connection_string, connect_args=cargs)
return e 
engine = my_create_engine('CDH_HIVE_PROD', 'CDH_HIVE_PROD') 
con = pyodbc.connect("DSN=CDH_HIVE_PROD")
pd.io.sql.to_sql(frame=df_output, name='test', schema='dbo', con=con, if_exists='replace', index=False )

最新更新