前面我們已經把大資料平台搭建完成了,接下來是怎麼應用大資料這件威力巨大的**了。因為作者目前在一家傳統型製造企業,很多業務和資料都是基於傳統關係型資料庫展開的,資料來源大部分都存在oracle、mysql、postgresql等傳統關係型資料庫,所以如何跟大資料平台建立聯絡,或者說讓大資料技術更接地氣,是應用大資料技術最好的實踐。本文從乙個初學者的角度去實踐spark訪問oracle資料庫的過程。
1.建立測試資料
create table emp
(empno number,
ename varchar (10),
job varchar (9),
mgr number,
sal number,
comm number,
deptno number
);insert into emp values
(7369, 'smith', 'clerk', 7902, 800, 50, 20);
insert into emp values
(7499, 'allen', 'salesman', 7698, 1600, 300, 30);
insert into emp values
(7521, 'ward', 'salesman', 7698, 1250, 500, 30);
insert into emp values
(7566, 'jones', 'manager', 7839, 2975, null, 20);
insert into emp values
(7654, 'martin', 'salesman', 7698, 1250, 1400, 30);
insert into emp values
(7698, 'blake', 'manager', 7839, 2850, null, 30);
insert into emp values
(7782, 'clark', 'manager', 7839, 2450, null, 10);
insert into emp values
(7788, 'scott', 'analyst', 7566, 3000, null, 20);
insert into emp values
(7839, 'king', 'president', null, 5000, null, 10);
insert into emp values
(7844, 'turner', 'salesman', 7698, 1500, 0, 30);
insert into emp values
(7876, 'adams', 'clerk', 7788, 1100, null, 20);
insert into emp values
(7900, 'james', 'clerk', 7698, 950, null, 30);
insert into emp values
(7902, 'ford', 'analyst', 7566, 3000, null, 20);
insert into emp values
(7934, 'miller', 'clerk', 7782, 1300, null, 10);
create table dept
(deptno number,
dname varchar (14),
loc varchar (13)
);insert into dept values (10, 'accounting', 'new york');
insert into dept values (20, 'research', 'dallas');
insert into dept values (30, 'sales', 'chicago');
insert into dept values (40, 'operations', 'boston');
commit;12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
2728
2930
3132
3334
3536
3738
3940
4142
4344
4546
4748
492.啟動集群
基於前面搭建好的大資料平台,呼叫啟動集群指令碼start-cluster.sh,啟動完成後登陸http://master:50070 和http://master:8080網頁訪問hadoop和spark,驗證集群有沒有啟動成功。
3.spark直連oracle
3.1. 集群成功啟動後,進入shell,因為筆者採用的是python指令碼,所以通過pyspark命令來實現資料庫操作任務,在spark集群上啟動pyspark命令如下:
./bin/pyspark --jars 「/home/spark/jars/ojdbc6.jar」 --master spark://master:7077,worker1:7077,worker2:7077 --num-executors 1 --driver-memory 1g --executor-memory 1g
啟動成功的頁面如下:
empdf = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:username/password@//hostname:portnumber/sid") \
.option("dbtable", "hr.emp") \
.option("user", "db_user_name") \
.option("password", "password") \
.option("driver", "oracle.jdbc.driver.oracledriver") \
.load()
empdf.printschema()
empdf.show()12
3456
78910
執行查詢命令,
query = "(select empno,ename,dname from emp, dept where emp.deptno = dept.deptno) emp"
empdf = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:username/password@//hostname:portnumber/sid") \
.option("dbtable", query) \
.option("user", "db_user_name") \
.option("password", "password") \
.option("driver", "oracle.jdbc.driver.oracledriver") \
.load()
empdf.printschema()
empdf.show()12
3456
78910
11
arcgis直連oracle資料庫
同時本機上安裝oracle服務端,版本是11g。之前裝了12c的版本,但怎麼都連不上 listener.ora內容 檔案中的路徑是我oracle服務端安裝的路徑。tnsnames.ora檔案內容 orcl description address protocol tcp host localhost...
C 直連Oracle資料庫(免安裝)
在日常開發過程中,經常會遇到要連線oracle資料 網上找了很多方法,有的方法是要安裝orcale client,這裡說的當然是免安裝的方法,只需要引用乙個dll檔案就ok了 dll檔名 oracle.manageddataaccess.dll 獲取方法 1 可以從oracle官網裡慢慢找。我是找了...
直連資料來源
在潤幹報表部署中,一般我們使用到應用伺服器的連線池配置進行與資料庫互動。直接通過reportconfig.xml中的datasource中配置的jndi名稱找到連線池.如果有些客戶不想通過連線池的配置,直接使用jdbc直連來與資料庫操作如何處理呢.在reportconfig.xml中也提供了相應的配...