ヒノマルク
今回はhiveのデータをpandasのデータフレームに読み込めるようにします。
hiveを使うということはかなり大きなデータを扱っていると思います。
データクリーニングやサマリデータの作成はなるべくhive側でさせてからpythonに連携したいですね。
impylaのコネクションを作成
impylaをインポート
from impala.dbapi import connect
コネクションを作成
conn = connect(host='localhost', port=10000, auth_mechanism="PLAIN", user="hinomaruc")
pandasのread_sqlメソッドによるデータ読み込み
pandasのread_sqlメソッドを使ってデータをhiveからdataframeに読み込む
import pandas as pd
# テーブル名一覧を取得するSQL
query = """show tables"""
df = pd.read_sql(query, con=conn)
dataframeに読み込んだデータを確認
# head()メソッドで上から5件を表示する
df.head()
Out[0]
tab_name 0 test
cx_Oracleとpsycopg2と同様の記載方法でデータをpandasのデータフレームで読み込むことができました。
impylaはas_pandas()という関数を用意してくれているので、そちらでの読み込み方法も試してみます。
impylaのas_pandas関数によるデータ読み込み
カーソルを作成しSQLを実行する
import pandas as pd
from impala.util import as_pandas
# カーソル作成
cur = conn.cursor()
cur.execute("""show tables""")
as_pandas関数でpandasのデータフレームにデータを読み込む
df = as_pandas(cur)
dataframeに読み込んだデータを確認
# head()メソッドで上から5件を表示する
df.head()
Out[0]
tab_name 0 test
結果はどちらも変わりません。個人的にはpandasのread_sqlメソッドを利用する方法が、他のライブラリと共通の書き方ができるし、わかりやすいのでおすすめです。