제플린에는 Share Table Object가 가능하다. => Zeppelin 공식 문서
Apache Zeppelin 0.11.0 Documentation: Zeppelin-Context
spark.sql (*), bigquery, cassandra, elasticsearch, file, hbase, jdbc (*), livy, markdown, neo4j, python, shell (*), zengine
zeppelin.apache.org
공식 문서에서는 %jdbc를 사용하는데, 나는 hive를 사용해주었고 방법은 똑같다! 인터프리터만 본인 DB에 맞는걸로 변경해주면 된당.
첫번째로, 불러오고 싶은 쿼리를 작성해준 후 인터프리터에 (saveAs=테이블명)을 추가해준다.
%hive(saveAs=테이블명)
SELECT * FROM test
마지막으로, python 인터프리터에서 z.getAsDataFrame 함수를 통해 테이블을 불러와준다.
%python
df=z.getAsDataFrame('test_table')
df.head()
이렇게 불러와진 df는 padnas dataframe이라서 기존에 판다스 문법과 동일하게 사용해주면 된다.!!!! 끝!!!!!
⛔ 혹시 initial_value must be str or None, not Javalist 에러 발생 시
해당 에러는 인덱싱 시 인덱스에 정수형이 아닌 문자열이 넣거나 인덱싱을 못한다. z.getAsDataFrame의 함수가 어떻게 정의되었는지 찾기는 힘들 것 같아서 야매로 사용해줬다. z.get('test')를 하면 리스트 형식으로 뜨는데 이걸 판다스로 전처리 후 사용 가능하다.
import pandas as pd
from io import StringIO
df_sql=z.get('test_table')
data = df_sql[0]
df = pd.read_csv(StringIO(data), sep='\t')
# Display the DataFrame
print(df)
댓글