将pandas表写入impala

Sum*_*Ela 8 python hadoop hdfs impala

使用impyla模块,我已经将impala查询的结果下载到pandas数据框中,完成分析,现在想将结果写回impala上的表,或者至少写入hdfs文件.

但是,我找不到有关如何执行此操作的任何信息,甚至无法找到如何ssh到impala shell并从那里写表.

我想做什么:

from impala.dbapi import connect
from impala.util import as_pandas

# connect to my host and port
conn=connect(host='myhost', port=111) 

# create query to save table as pandas df
create_query = """
     SELECT * FROM {}
     """.format(my_table_name)

# run query on impala
cur = conn.cursor()
cur.execute(create_query)

# store results as pandas data frame
pandas_df = as_pandas(cur)
cur.close()  
Run Code Online (Sandbox Code Playgroud)

一旦我完成了pandas_df需要做的任何事情,将这些结果作为表保存回impala.

# create query to save new_df back to impala
save_query = """
    CREATE TABLE new_table AS
        SELECT * 
        FROM pandas_df
    """

# run query on impala
cur = conn.cursor()
cur.execute(save_query)
cur.close()
Run Code Online (Sandbox Code Playgroud)

上面的场景是理想的,但是如果我能弄清楚如何ssh到impala-shell并从python中执行此操作,或者甚至只是将表保存到hdfs,我会很高兴.我将此作为其他用户的脚本编写,因此必须在脚本中完成所有这些操作.非常感谢!

Isa*_*aac 5

你会爱上宜必思!它具有HDFS功能(put即),并包装你需要的Impala DML和DDL,使这很容易.

我用于类似的一般方法是将您的pandas表保存到CSV,HDFS.put然后保存到集群,然后使用该CSV作为数据源创建一个新表.

你并不需要宜必思这一点,但它应该使它稍微容易一些,可能对你是一个很好的工具,如果你已经很熟悉的大熊猫(宜必思也被韦斯,谁写大熊猫创建).