Spark直連Oracle資料庫(五)

2021-09-29 16:48:09 字數 3652 閱讀 7928

前面我們已經把大資料平台搭建完成了,接下來是怎麼應用大資料這件威力巨大的**了。因為作者目前在一家傳統型製造企業,很多業務和資料都是基於傳統關係型資料庫展開的,資料來源大部分都存在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中也提供了相應的配...