【问题标题】:How to convert a presto query output to a python data frame如何将 presto 查询输出转换为 python 数据框
【发布时间】:2019-09-23 02:23:51
【问题描述】:

我想将我的查询输出转换为 python 数据框来绘制折线图

import prestodb
import pandas as pd

conn=prestodb.dbapi.connect(
host='10.0.0.101',
port=8081,
user='hive',
catalog='hive',
schema='ong',
)

cur = conn.cursor()

query="SELECT dtime,tagName FROM machine where tagname is not null 
limit 1000"

cur.execute(query)

rows = cur.fetchall()

print(rows)

df = pd.DataFrame(query, columns=['x_axis','tagName'])

这是我的查询输出示例

[['2018-09-08 00:00:00.000', 26], ['2018-09-08 01:00:00.000', 26], 
['2018-09-08 02:00:00.000', 26], ['2018-09-08 03:00:00.000', 27], 
['2018-09-08 04:00:00.000', 27], ['2018-09-08 05:00:00.000', 27]]

如何使用python将此查询输出转换为数据框

【问题讨论】:

    标签: dataframe presto


    【解决方案1】:

    很简单,我建议你使用pyhive.presto连接器(见:https://github.com/dropbox/PyHive)来连接presto,而且你使用的那个也应该以同样的方式工作。

    那么你有几个选择:

    1 - 使用 presto 连接和 pandas read_sql_query

    2 - 使用 presto cursor 并使用 fetchall 的输出作为数据帧的输入数据。

    # option 1
    import pandas as pd
    from pyhive import presto
    
    connection = presto.connect(user='my-user', host='presto.my.host.com', port=8889)
    
    df = pd.read_sql_query("select 100", connection)
    
    print(
        df.head()
    )
    

    # option 2
    import pandas as pd
    from pyhive import presto
    
    connection = presto.connect(user='my-user', host='presto.my.host.com', port=8889)
    cur = connection.cursor()
    
    cur.execute("select 100") 
    
    df = pd.DataFrame(cur.fetchall())
    
    print(
        df.head()
    )
    

    【讨论】:

      【解决方案2】:

      df = pd.DataFrame(cur.fetchall()) 打印(df)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 2018-07-22
        • 2020-07-15
        • 1970-01-01
        • 2021-05-23
        相关资源
        最近更新 更多