蜂巢数据到熊猫数据帧



新手到Python。

如何将数据从蜂巢保存到熊猫数据框。

with pyhs2.connect(host, port=20000,authMechanism="PLAIN",user,password,
               database) as conn:
    with conn.cursor() as cur:
        #Show databases
        print cur.getDatabases()
        #Execute query
        cur.execute(query)
        #Return column info from query
        print cur.getSchema()
        #Fetch table results
        for i in cur.fetch():
            print i
        **columnNames = [a['columnName'] for a in  cur.getSchema()]
        print columnNames
        df1=pd.DataFrame(cur.fetch(),columnNames)**

已尝试使用列名。没用。

请提出一些建议。

pd.read_sql() (pandas 0.24.0) 需要数据库连接。直接将 PyHive 连接与pandas.read_sql()一起使用,如下所示:

from pyhive import hive
import pandas as pd
# open connection
conn = hive.Connection(host=host,port= 20000, ...)
# query the table to a new dataframe
dataframe = pd.read_sql("SELECT id, name FROM test.example_table", conn)

数据帧的列将以配置单元表的列命名。如果需要,可以在数据帧创建期间/之后更改它们:

  • 通过HiveQL:SELECT id AS new_column_name ...
  • pd.read_sql()中的 via 列属性

你可以试试这个:(我很确定它会起作用)

res = cur.getSchema()
description = list(col['columnName'] for col in res)  ## for getting the column names of the table 
headers = [x.split(".")[1] for x in description] # for splitting the list if the column name contains a period
df= pd.DataFrame(cur.fetchall(), columns = headers)
df.head(n = 20)

由于我之前获取过数据并尝试再次获取数据,因此获得空数据框也是如此。

cur.execute(query)
val=cur.fetchall()
columnNames = [a['columnName'] for a in  cur.getSchema()]
df=pd.DataFrame(data=val,columns=columnNames)
#print df
return df

最新更新