新手到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