真的只是個(gè)隨手筆記。記錄下一些操作過(guò)程稀颁。
背景
最近需要實(shí)現(xiàn)一些Spark邏輯計(jì)劃和物理計(jì)劃的優(yōu)化肢藐,遂打算寫一點(diǎn)簡(jiǎn)單的數(shù)據(jù)源來(lái)測(cè)試。突然想到了Oracle常見(jiàn)的scott/tiger里的數(shù)據(jù)巍虫。遂打算使用該數(shù)據(jù)彭则。
獲得數(shù)據(jù)
畢竟裝Oracle是個(gè)大工程,沒(méi)有必要為了做個(gè)測(cè)試單獨(dú)安裝一個(gè)Oracle占遥,于是用Docker俯抖,這里推薦一下阿里的Docker Oracle鏡像庫(kù):
https://dev.aliyun.com/detail.html?spm=5176.1972343.2.2.2f075aaaGOYe3m&repoId=1969
按照其方式啟動(dòng)Oracle鏡像并sqlplus登錄sysdba以后,為了確保scott/tiger沒(méi)有被鎖瓦胎,還是做了一下解鎖操作:
SQL> alter user scott account unlock;
然后退出sqlplus并用scott/tiger重新登錄sysdba芬萍,并且查看scott的表:
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
沒(méi)有問(wèn)題。
在此只做一些簡(jiǎn)單的測(cè)試凛捏,所以并沒(méi)有使用jdbc方式在test類里獲取數(shù)據(jù)担忧,而是直接拿了一些數(shù)據(jù)hard code在test類里。
寫Spark DataSource API
實(shí)現(xiàn)了簡(jiǎn)單的謂詞下推功能坯癣。詳細(xì)Datasource代碼見(jiàn)GitHub瓶盛,里面還包含了一個(gè)tpc-ds的DataSource:
https://github.com/orisonchan/spark-datasource-some-examples