SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
<Insert Picture Here>
©2014 Oracle – All Rights Reserved
Session 6: ROracle
Mark Hornick, Director, Oracle Advanced Analytics Development
Oracle Advanced Analytics
2
Topics
• What is ROracle?
• Using ROracle
• Summary
©2014 Oracle – All Rights Reserved
3
What is ROracle?
©2014 Oracle – All Rights Reserved
4
ROracle
• R package enabling connectivity to Oracle Database
– Open source
– Publically available on CRAN
• Execute SQL statements from R interface
• Oracle Database Interface (DBI) for R
• DBI –compliant Oracle driver based on OCI
• Requirements
– Oracle Instant Client or Oracle Database Client
Examples from ROracle package documentation http://cran.r-project.org/web/packages/ROracle/ROracle.pdf
©2014 Oracle – All Rights Reserved
5
ROracle
DBI & SQL
Oracle Database
• R package enabling connectivity to Oracle Database
– Open source, publicly available on CRAN, free to R community
• Execute SQL statements from R interface
• Oracle Database Interface (DBI) for R based on OCI for high performance
• Supports Oracle R Enterprise database connectivity
©2014 Oracle – All Rights Reserved
6
Comparison reading database table to R data.frame
• ROracle
– Up to 79X faster than RJDBC
– Up to 2.5X faster than RODBC
– Scales across NUMBER, VARCHAR2,
TIMESTAMP data types
See https://blogs.oracle.com/R/entry/r_to_oracle_database_connectivity
©2014 Oracle – All Rights Reserved
7
Comparison writing database table from R data.frame
• ROracle
– 61X faster for 10 cols x 10K rows than RODBC
– 630X faster on 10 cols x 10K rows than RJDBC
– Scales across the remaining data types
©2014 Oracle – All Rights Reserved
8
ROracle 1-1.11 Enhancements
• Performance enhancements for RAW data types and large
result sets
• Cache resultset in memory before transferring to R to avoid
unnecessary alloc and free using allocVector when result
exceeds bulk_read rows
• Added session mode to connect as SYSDBA or using
external authentication
• bug 17383542: Enhanced dbWritetable() & dbRemoveTable()
to work on global schema
©2014 Oracle – All Rights Reserved
9
Using ROracle
©2014 Oracle – All Rights Reserved
10
Example – rolling back transactions
drv <- dbDriver("Oracle")
# Create the connection string
host <- "adc2100958"
port <- 1521
sid <- "orff"
connect.string <- paste(
"(DESCRIPTION=",
"(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
"(CONNECT_DATA=(SID=", sid, ")))", sep = "")
con <- dbConnect(drv, username = "scott",
password = "tiger",dbname=connect.string)
©2014 Oracle – All Rights Reserved
11
Example – rolling back transactions
dbReadTable(con, "EMP")
rs <- dbSendQuery(con, "delete from emp where deptno = 10")
dbReadTable(con, "EMP")
if(dbGetInfo(rs, what = "rowsAffected") > 1){
warning("dubious deletion -- rolling back transaction")
dbRollback(con)
}
dbReadTable(con, "EMP")
©2014 Oracle – All Rights Reserved
12
Example – username/password authentication
## create an Oracle instance and create one connection
drv <- dbDriver("Oracle")
## use username/password authentication – if using local database
con <- dbConnect(drv, username = "scott", password = "tiger")
## run a SQL statement by first creating a resultSet object
rs <- dbSendQuery(con, "select * from emp where deptno = 10")
## fetch records from the resultSet into a data.frame
data <- fetch(rs)
## extract all rows
dim(data)
data
©2014 Oracle – All Rights Reserved
14
Example – connect to TimeTen IMDB instance
## create an Oracle instance and create one connection.
drv <- dbDriver("Oracle")
## connect to a TimesTen IMDB instance using the easy connect
## naming method where SampleDb is a direct driver TimesTen DSN
con <- dbConnect(drv, username ="scott", password="tiger",
dbname = "localhost/SampleDb:timesten_direct")
## run an SQL statement by creating first a resultSet object
rs <- dbSendQuery(con, "select * from dual")
## we now fetch records from the resultSet into a data.frame
data <- fetch(rs) ## extract all rows
dim(data)
©2014 Oracle – All Rights Reserved
15
Example – connect to an extproc for use within ERE
## connect to an extproc (this assumes that driver has already
## been initialized in the embedded code by passing an external
## pointer representing extproc context)
con <- dbConnect(Extproc())
## run a SQL statement by first creating a resultSet object
rs <- dbSendQuery(con, "select * from dual")
## we now fetch records from the resultSet into a data.frame
data <- fetch(rs) ## extract all rows
dim(data)
©2014 Oracle – All Rights Reserved
16
Example – unload driver
# create an Oracle instance
drv <- dbDriver("Oracle")
con <- dbConnect(drv, "scott", "tiger", dbname=connect.string)
res <- dbSendQuery(con, "select * from emp")
fetch(res, n = 5)
fetch(res)
# free resources occupied by result set
dbClearResult(res)
dbUnloadDriver(drv)
©2014 Oracle – All Rights Reserved
17
Example – getInfo methods
drv <- dbDriver("Oracle")
con <- dbConnect(drv, "scott", "tiger", dbname=connect.string)
rs <- dbSendQuery(con, "select * from emp")
dbGetStatement(rs)
dbHasCompleted(rs)
dbGetInfo(rs)
# DBIDriver info
names(dbGetInfo(drv))
# DBIConnection info
names(dbGetInfo(con))
# DBIResult info
names(dbGetInfo(rs))
©2014 Oracle – All Rights Reserved
18
Example – getInfo methods
drv <- dbDriver("Oracle")
con1 <- dbConnect(drv, "scott", "tiger", dbname=connect.string)
res1 <- dbSendQuery(con1, "select * from emp where deptno = 10")
res2 <- dbSendQuery(con1, "select * from emp where deptno = 20")
con2 <- dbConnect(drv, "scott", "tiger")
res3 <- dbSendQuery(con2, "select * from dept")
## get all active statements
for(con in dbListConnections(drv))
for (res in dbListResults(con))
print(dbGetStatement(res))
©2014 Oracle – All Rights Reserved
19
Example – read/write table methods
con <- dbConnect(Oracle(), "scott", "tiger", dbname=connect.string)
if (dbExistsTable(con, "FOO", "SCOTT"))
dbRemoveTable(con, "FOO")
foo <- dbReadTable(con, "EMP")
row.names(foo) <- foo$EMPNO
foo <- foo[,-1]
dbWriteTable(con, "FOO", foo, row.names = TRUE)
dbWriteTable(con, "FOO", foo, row.names = TRUE, overwrite = TRUE)
dbReadTable(con, "FOO", row.names = 1)
dbGetQuery(con, "delete from foo")
dbWriteTable(con, "FOO", foo, row.names = TRUE, append = TRUE)
dbReadTable(con, "FOO", row.names = 1)
dbRemoveTable(con, "FOO")
dbListTables(con)
dbListFields(con, "EMP")
if (dbExistsTable(con, "RORACLE_TEST", "SCOTT"))
dbRemoveTable(con, "RORACLE_TEST")
©2014 Oracle – All Rights Reserved
20
Example – read/write table methods
# example of POSIXct usage
# A table is created using:
createTab <- "create table RORACLE_TEST(row_num number, id1 date,
id2 timestamp, id3 timestamp with time zone,
id4 timestamp with local time zone )"
dbGetQuery(con, createTab)
# Insert statement
insStr <- "insert into RORACLE_TEST values(:1, :2, :3, :4, :5)";
# Select statement
selStr <- "select * from RORACLE_TEST";
# Insert time stamp without time values in POSIXct form
x <- 1;
y <- "2012-06-05";
y <- as.POSIXct(y);
dbGetQuery(con, insStr, data.frame(x, y, y, y, y));
©2014 Oracle – All Rights Reserved
21
Example – read/write table methods
# Insert date & times tamp with time values in POSIXct form
x <- 2;
y <- "2012-01-05 07:15:02";
y <- as.POSIXct(y);
z <- "2012-01-05 07:15:03.123";
z <- as.POSIXct(z);
dbGetQuery(con, insStr, data.frame(x, y, z, z, z));
# Insert list of date objects in POSIXct form
x <- c(3, 4, 5, 6);
y <- c('2012-01-05', '2011-01-05', '2014-01-05', '2020-01-05');
y <- as.POSIXct(y);
dbGetQuery(con, insStr, data.frame(x, y, y, y, y));
dbCommit (con)
# Selecting data and displaying it
res <- dbGetQuery(con, selStr)
res[,1]
res[,2]
res[,3]
res[,4]
res[,5]
©2014 Oracle – All Rights Reserved
22
Example – send query methods
drv <- dbDriver("Oracle")
con <- dbConnect(drv, "scott", "tiger")
res <- dbSendQuery(con, "select * from emp where deptno = :1",
data = data.frame(deptno = 10))
data <- fetch(res, n = -1)
res2 <- dbSendQuery(con, "select * from emp where deptno = :1",
data = data.frame(deptno = 10), prefetch=TRUE, bulk_read=2L)
data1 <- fetch(res2, n = -1)
res3 <- dbSendQuery(con, "select * from emp where deptno = :1",
data = data.frame(deptno = 10), bulk_read=10L)
data2 <- fetch(res3, n = -1)
res4 <- dbSendQuery(con, "select * from emp where ename = :1",
data = data.frame(ename = 'SMITH'))
data3 <- fetch(res4, n = -1)
©2014 Oracle – All Rights Reserved
23
Example – Oracle method
## create a Oracle instance and create one connection.
ora <- Oracle() ## or dbDriver("Oracle")
con <- dbConnect(ora, username = "scott", password = "tiger", dbname = "inst1")
## if you are connecting to a local database
con <- dbConnect(ora, username = "scott", password = "tiger")
## execute a statement and fetch output in chunks <= 5000 rows at a time
rs <- dbSendQuery(con, "select * from emp where deptno = 10")
while (!dbHasCompleted(rs)) {
df <- fetch(rs, n = 5000)
## process df
}
dbClearResult(rs) ## done with this query
©2014 Oracle – All Rights Reserved
24
Example – Oracle method
## execute and fetch a statement with bind data
df <- dbGetQuery(con, "select * from emp where deptno = :1", data = data.frame(depno = 10))
## create a copy of emp table
dbGetQuery(con, "create table foo as select * from emp")
## execute and bind an INSERT statement
my.data = data.frame(empno = c(8001, 8002), ename = c('MUKHIN', 'ABOYOUN'))
more.data = data.frame(empno = c(8003), ename = c('JAMES'))
rs <- dbSendQuery(con, "insert into foo (empno, ename) values (:1, :2)",data = my.data)
## execute with more data
execute(rs, data = more.data)
df <- dbGetQuery(con, "select * from foo")
dbClearResult(rs) ## done with this query
dbCommit(con) ## ok, everything looks fine
summary(ora) ## a concise description of the driver
dbDisconnect(con) ## done with this connection
©2014 Oracle – All Rights Reserved
25
Summary
• R package enabling connectivity to Oracle Database
– Open source
– Publically available on CRAN
• Execute SQL statements from R interface
• Oracle Database Interface (DBI) for R
• DBI –compliant Oracle driver based on OCI
• Requirements
– Oracle Instant Client or Oracle Database Client
©2014 Oracle – All Rights Reserved
26
Resources
• Book: Using R to Unlock the Value of Big Data
• Blog: https://blogs.oracle.com/R/
• Forum: https://forums.oracle.com/forums/forum.jspa?forumID=1397
• Oracle R Distribution
• ROracle
• Oracle R Enterprise
• Oracle R Connector for Hadoop
©2014 Oracle – All Rights Reserved
http://oracle.com/goto/R
27
©2014 Oracle – All Rights Reserved
28

Weitere ähnliche Inhalte

Was ist angesagt?

Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Ontico
 
Webinar: Replication and Replica Sets
Webinar: Replication and Replica SetsWebinar: Replication and Replica Sets
Webinar: Replication and Replica SetsMongoDB
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsShigeru Hanada
 
ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...
ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...
ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...Altinity Ltd
 
MongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsServer Density
 
Psycopg2 - Connect to PostgreSQL using Python Script
Psycopg2 - Connect to PostgreSQL using Python ScriptPsycopg2 - Connect to PostgreSQL using Python Script
Psycopg2 - Connect to PostgreSQL using Python ScriptSurvey Department
 
What's New in the PHP Driver
What's New in the PHP DriverWhat's New in the PHP Driver
What's New in the PHP DriverMongoDB
 
Postgres Conference (PgCon) New York 2019
Postgres Conference (PgCon) New York 2019Postgres Conference (PgCon) New York 2019
Postgres Conference (PgCon) New York 2019Ibrar Ahmed
 
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEOClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEOAltinity Ltd
 
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQLPGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQLPGConf APAC
 
Tiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEOTiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEOAltinity Ltd
 
Agile Database Development with JSON
Agile Database Development with JSONAgile Database Development with JSON
Agile Database Development with JSONChris Saxon
 
Connect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and JavaConnect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and JavaJulian Robichaux
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Los Angeles R users group - Dec 14 2010 - Part 2
Los Angeles R users group - Dec 14 2010 - Part 2Los Angeles R users group - Dec 14 2010 - Part 2
Los Angeles R users group - Dec 14 2010 - Part 2rusersla
 
StackExchange.redis
StackExchange.redisStackExchange.redis
StackExchange.redisLarry Nung
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesDave Stokes
 

Was ist angesagt? (20)

Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
 
Webinar: Replication and Replica Sets
Webinar: Replication and Replica SetsWebinar: Replication and Replica Sets
Webinar: Replication and Replica Sets
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper Enhancements
 
ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...
ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...
ClickHouse Unleashed 2020: Our Favorite New Features for Your Analytical Appl...
 
MongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & Analytics
 
Psycopg2 - Connect to PostgreSQL using Python Script
Psycopg2 - Connect to PostgreSQL using Python ScriptPsycopg2 - Connect to PostgreSQL using Python Script
Psycopg2 - Connect to PostgreSQL using Python Script
 
What's New in the PHP Driver
What's New in the PHP DriverWhat's New in the PHP Driver
What's New in the PHP Driver
 
Postgres Conference (PgCon) New York 2019
Postgres Conference (PgCon) New York 2019Postgres Conference (PgCon) New York 2019
Postgres Conference (PgCon) New York 2019
 
Mongodb workshop
Mongodb workshopMongodb workshop
Mongodb workshop
 
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEOClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
 
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQLPGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
 
Tiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEOTiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEO
 
Agile Database Development with JSON
Agile Database Development with JSONAgile Database Development with JSON
Agile Database Development with JSON
 
Connect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and JavaConnect2016 AD1387 Integrate with XPages and Java
Connect2016 AD1387 Integrate with XPages and Java
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Los Angeles R users group - Dec 14 2010 - Part 2
Los Angeles R users group - Dec 14 2010 - Part 2Los Angeles R users group - Dec 14 2010 - Part 2
Los Angeles R users group - Dec 14 2010 - Part 2
 
Spock and Geb in Action
Spock and Geb in ActionSpock and Geb in Action
Spock and Geb in Action
 
StackExchange.redis
StackExchange.redisStackExchange.redis
StackExchange.redis
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
All Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for NewbiesAll Things Open 2016 -- Database Programming for Newbies
All Things Open 2016 -- Database Programming for Newbies
 

Ähnlich wie ROracle

Example R usage for oracle DBA UKOUG 2013
Example R usage for oracle DBA UKOUG 2013Example R usage for oracle DBA UKOUG 2013
Example R usage for oracle DBA UKOUG 2013BertrandDrouvot
 
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...Аліна Шепшелей
 
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...Inhacking
 
Kerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit eastKerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit eastJorge Lopez-Malla
 
RMySQL Tutorial For Beginners
RMySQL Tutorial For BeginnersRMySQL Tutorial For Beginners
RMySQL Tutorial For BeginnersRsquared Academy
 
Jump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksJump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksDatabricks
 
Create a Database Application Development Environment with Docker
Create a Database Application Development Environment with DockerCreate a Database Application Development Environment with Docker
Create a Database Application Development Environment with DockerBlaine Carter
 
Declarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformDeclarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformRadek Simko
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceSven Ruppert
 
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHPWhat’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHPChristopher Jones
 
iPhone and Rails integration
iPhone and Rails integrationiPhone and Rails integration
iPhone and Rails integrationPaul Ardeleanu
 
GDG DevFest 2015 - Reactive approach for slowpokes
GDG DevFest 2015 - Reactive approach for slowpokesGDG DevFest 2015 - Reactive approach for slowpokes
GDG DevFest 2015 - Reactive approach for slowpokesSergey Tarasevich
 
Ruby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrādeRuby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrādeRaimonds Simanovskis
 
Embedded R Execution using SQL
Embedded R Execution using SQLEmbedded R Execution using SQL
Embedded R Execution using SQLBrendan Tierney
 
containerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brusselscontainerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, BrusselsDaniel Nüst
 
Building node.js applications with Database Jones
Building node.js applications with Database JonesBuilding node.js applications with Database Jones
Building node.js applications with Database JonesJohn David Duncan
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools Yulia Shcherbachova
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryAlexandre Morgaut
 

Ähnlich wie ROracle (20)

Example R usage for oracle DBA UKOUG 2013
Example R usage for oracle DBA UKOUG 2013Example R usage for oracle DBA UKOUG 2013
Example R usage for oracle DBA UKOUG 2013
 
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
 
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
 
Kerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit eastKerberizing spark. Spark Summit east
Kerberizing spark. Spark Summit east
 
RMySQL Tutorial For Beginners
RMySQL Tutorial For BeginnersRMySQL Tutorial For Beginners
RMySQL Tutorial For Beginners
 
Jump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksJump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and Databricks
 
Create a Database Application Development Environment with Docker
Create a Database Application Development Environment with DockerCreate a Database Application Development Environment with Docker
Create a Database Application Development Environment with Docker
 
Declarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformDeclarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with Terraform
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-Persistence
 
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHPWhat’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHP
 
iPhone and Rails integration
iPhone and Rails integrationiPhone and Rails integration
iPhone and Rails integration
 
Oracle on Solaris
Oracle on SolarisOracle on Solaris
Oracle on Solaris
 
GDG DevFest 2015 - Reactive approach for slowpokes
GDG DevFest 2015 - Reactive approach for slowpokesGDG DevFest 2015 - Reactive approach for slowpokes
GDG DevFest 2015 - Reactive approach for slowpokes
 
Ruby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrādeRuby on Rails Oracle adaptera izstrāde
Ruby on Rails Oracle adaptera izstrāde
 
Embedded R Execution using SQL
Embedded R Execution using SQLEmbedded R Execution using SQL
Embedded R Execution using SQL
 
containerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brusselscontainerit at useR!2017 conference, Brussels
containerit at useR!2017 conference, Brussels
 
Building node.js applications with Database Jones
Building node.js applications with Database JonesBuilding node.js applications with Database Jones
Building node.js applications with Database Jones
 
Lecture17
Lecture17Lecture17
Lecture17
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love Story
 

Kürzlich hochgeladen

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Kürzlich hochgeladen (20)

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

ROracle

  • 1. <Insert Picture Here> ©2014 Oracle – All Rights Reserved Session 6: ROracle Mark Hornick, Director, Oracle Advanced Analytics Development Oracle Advanced Analytics
  • 2. 2 Topics • What is ROracle? • Using ROracle • Summary ©2014 Oracle – All Rights Reserved
  • 3. 3 What is ROracle? ©2014 Oracle – All Rights Reserved
  • 4. 4 ROracle • R package enabling connectivity to Oracle Database – Open source – Publically available on CRAN • Execute SQL statements from R interface • Oracle Database Interface (DBI) for R • DBI –compliant Oracle driver based on OCI • Requirements – Oracle Instant Client or Oracle Database Client Examples from ROracle package documentation http://cran.r-project.org/web/packages/ROracle/ROracle.pdf ©2014 Oracle – All Rights Reserved
  • 5. 5 ROracle DBI & SQL Oracle Database • R package enabling connectivity to Oracle Database – Open source, publicly available on CRAN, free to R community • Execute SQL statements from R interface • Oracle Database Interface (DBI) for R based on OCI for high performance • Supports Oracle R Enterprise database connectivity ©2014 Oracle – All Rights Reserved
  • 6. 6 Comparison reading database table to R data.frame • ROracle – Up to 79X faster than RJDBC – Up to 2.5X faster than RODBC – Scales across NUMBER, VARCHAR2, TIMESTAMP data types See https://blogs.oracle.com/R/entry/r_to_oracle_database_connectivity ©2014 Oracle – All Rights Reserved
  • 7. 7 Comparison writing database table from R data.frame • ROracle – 61X faster for 10 cols x 10K rows than RODBC – 630X faster on 10 cols x 10K rows than RJDBC – Scales across the remaining data types ©2014 Oracle – All Rights Reserved
  • 8. 8 ROracle 1-1.11 Enhancements • Performance enhancements for RAW data types and large result sets • Cache resultset in memory before transferring to R to avoid unnecessary alloc and free using allocVector when result exceeds bulk_read rows • Added session mode to connect as SYSDBA or using external authentication • bug 17383542: Enhanced dbWritetable() & dbRemoveTable() to work on global schema ©2014 Oracle – All Rights Reserved
  • 9. 9 Using ROracle ©2014 Oracle – All Rights Reserved
  • 10. 10 Example – rolling back transactions drv <- dbDriver("Oracle") # Create the connection string host <- "adc2100958" port <- 1521 sid <- "orff" connect.string <- paste( "(DESCRIPTION=", "(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))", "(CONNECT_DATA=(SID=", sid, ")))", sep = "") con <- dbConnect(drv, username = "scott", password = "tiger",dbname=connect.string) ©2014 Oracle – All Rights Reserved
  • 11. 11 Example – rolling back transactions dbReadTable(con, "EMP") rs <- dbSendQuery(con, "delete from emp where deptno = 10") dbReadTable(con, "EMP") if(dbGetInfo(rs, what = "rowsAffected") > 1){ warning("dubious deletion -- rolling back transaction") dbRollback(con) } dbReadTable(con, "EMP") ©2014 Oracle – All Rights Reserved
  • 12. 12 Example – username/password authentication ## create an Oracle instance and create one connection drv <- dbDriver("Oracle") ## use username/password authentication – if using local database con <- dbConnect(drv, username = "scott", password = "tiger") ## run a SQL statement by first creating a resultSet object rs <- dbSendQuery(con, "select * from emp where deptno = 10") ## fetch records from the resultSet into a data.frame data <- fetch(rs) ## extract all rows dim(data) data ©2014 Oracle – All Rights Reserved
  • 13. 14 Example – connect to TimeTen IMDB instance ## create an Oracle instance and create one connection. drv <- dbDriver("Oracle") ## connect to a TimesTen IMDB instance using the easy connect ## naming method where SampleDb is a direct driver TimesTen DSN con <- dbConnect(drv, username ="scott", password="tiger", dbname = "localhost/SampleDb:timesten_direct") ## run an SQL statement by creating first a resultSet object rs <- dbSendQuery(con, "select * from dual") ## we now fetch records from the resultSet into a data.frame data <- fetch(rs) ## extract all rows dim(data) ©2014 Oracle – All Rights Reserved
  • 14. 15 Example – connect to an extproc for use within ERE ## connect to an extproc (this assumes that driver has already ## been initialized in the embedded code by passing an external ## pointer representing extproc context) con <- dbConnect(Extproc()) ## run a SQL statement by first creating a resultSet object rs <- dbSendQuery(con, "select * from dual") ## we now fetch records from the resultSet into a data.frame data <- fetch(rs) ## extract all rows dim(data) ©2014 Oracle – All Rights Reserved
  • 15. 16 Example – unload driver # create an Oracle instance drv <- dbDriver("Oracle") con <- dbConnect(drv, "scott", "tiger", dbname=connect.string) res <- dbSendQuery(con, "select * from emp") fetch(res, n = 5) fetch(res) # free resources occupied by result set dbClearResult(res) dbUnloadDriver(drv) ©2014 Oracle – All Rights Reserved
  • 16. 17 Example – getInfo methods drv <- dbDriver("Oracle") con <- dbConnect(drv, "scott", "tiger", dbname=connect.string) rs <- dbSendQuery(con, "select * from emp") dbGetStatement(rs) dbHasCompleted(rs) dbGetInfo(rs) # DBIDriver info names(dbGetInfo(drv)) # DBIConnection info names(dbGetInfo(con)) # DBIResult info names(dbGetInfo(rs)) ©2014 Oracle – All Rights Reserved
  • 17. 18 Example – getInfo methods drv <- dbDriver("Oracle") con1 <- dbConnect(drv, "scott", "tiger", dbname=connect.string) res1 <- dbSendQuery(con1, "select * from emp where deptno = 10") res2 <- dbSendQuery(con1, "select * from emp where deptno = 20") con2 <- dbConnect(drv, "scott", "tiger") res3 <- dbSendQuery(con2, "select * from dept") ## get all active statements for(con in dbListConnections(drv)) for (res in dbListResults(con)) print(dbGetStatement(res)) ©2014 Oracle – All Rights Reserved
  • 18. 19 Example – read/write table methods con <- dbConnect(Oracle(), "scott", "tiger", dbname=connect.string) if (dbExistsTable(con, "FOO", "SCOTT")) dbRemoveTable(con, "FOO") foo <- dbReadTable(con, "EMP") row.names(foo) <- foo$EMPNO foo <- foo[,-1] dbWriteTable(con, "FOO", foo, row.names = TRUE) dbWriteTable(con, "FOO", foo, row.names = TRUE, overwrite = TRUE) dbReadTable(con, "FOO", row.names = 1) dbGetQuery(con, "delete from foo") dbWriteTable(con, "FOO", foo, row.names = TRUE, append = TRUE) dbReadTable(con, "FOO", row.names = 1) dbRemoveTable(con, "FOO") dbListTables(con) dbListFields(con, "EMP") if (dbExistsTable(con, "RORACLE_TEST", "SCOTT")) dbRemoveTable(con, "RORACLE_TEST") ©2014 Oracle – All Rights Reserved
  • 19. 20 Example – read/write table methods # example of POSIXct usage # A table is created using: createTab <- "create table RORACLE_TEST(row_num number, id1 date, id2 timestamp, id3 timestamp with time zone, id4 timestamp with local time zone )" dbGetQuery(con, createTab) # Insert statement insStr <- "insert into RORACLE_TEST values(:1, :2, :3, :4, :5)"; # Select statement selStr <- "select * from RORACLE_TEST"; # Insert time stamp without time values in POSIXct form x <- 1; y <- "2012-06-05"; y <- as.POSIXct(y); dbGetQuery(con, insStr, data.frame(x, y, y, y, y)); ©2014 Oracle – All Rights Reserved
  • 20. 21 Example – read/write table methods # Insert date & times tamp with time values in POSIXct form x <- 2; y <- "2012-01-05 07:15:02"; y <- as.POSIXct(y); z <- "2012-01-05 07:15:03.123"; z <- as.POSIXct(z); dbGetQuery(con, insStr, data.frame(x, y, z, z, z)); # Insert list of date objects in POSIXct form x <- c(3, 4, 5, 6); y <- c('2012-01-05', '2011-01-05', '2014-01-05', '2020-01-05'); y <- as.POSIXct(y); dbGetQuery(con, insStr, data.frame(x, y, y, y, y)); dbCommit (con) # Selecting data and displaying it res <- dbGetQuery(con, selStr) res[,1] res[,2] res[,3] res[,4] res[,5] ©2014 Oracle – All Rights Reserved
  • 21. 22 Example – send query methods drv <- dbDriver("Oracle") con <- dbConnect(drv, "scott", "tiger") res <- dbSendQuery(con, "select * from emp where deptno = :1", data = data.frame(deptno = 10)) data <- fetch(res, n = -1) res2 <- dbSendQuery(con, "select * from emp where deptno = :1", data = data.frame(deptno = 10), prefetch=TRUE, bulk_read=2L) data1 <- fetch(res2, n = -1) res3 <- dbSendQuery(con, "select * from emp where deptno = :1", data = data.frame(deptno = 10), bulk_read=10L) data2 <- fetch(res3, n = -1) res4 <- dbSendQuery(con, "select * from emp where ename = :1", data = data.frame(ename = 'SMITH')) data3 <- fetch(res4, n = -1) ©2014 Oracle – All Rights Reserved
  • 22. 23 Example – Oracle method ## create a Oracle instance and create one connection. ora <- Oracle() ## or dbDriver("Oracle") con <- dbConnect(ora, username = "scott", password = "tiger", dbname = "inst1") ## if you are connecting to a local database con <- dbConnect(ora, username = "scott", password = "tiger") ## execute a statement and fetch output in chunks <= 5000 rows at a time rs <- dbSendQuery(con, "select * from emp where deptno = 10") while (!dbHasCompleted(rs)) { df <- fetch(rs, n = 5000) ## process df } dbClearResult(rs) ## done with this query ©2014 Oracle – All Rights Reserved
  • 23. 24 Example – Oracle method ## execute and fetch a statement with bind data df <- dbGetQuery(con, "select * from emp where deptno = :1", data = data.frame(depno = 10)) ## create a copy of emp table dbGetQuery(con, "create table foo as select * from emp") ## execute and bind an INSERT statement my.data = data.frame(empno = c(8001, 8002), ename = c('MUKHIN', 'ABOYOUN')) more.data = data.frame(empno = c(8003), ename = c('JAMES')) rs <- dbSendQuery(con, "insert into foo (empno, ename) values (:1, :2)",data = my.data) ## execute with more data execute(rs, data = more.data) df <- dbGetQuery(con, "select * from foo") dbClearResult(rs) ## done with this query dbCommit(con) ## ok, everything looks fine summary(ora) ## a concise description of the driver dbDisconnect(con) ## done with this connection ©2014 Oracle – All Rights Reserved
  • 24. 25 Summary • R package enabling connectivity to Oracle Database – Open source – Publically available on CRAN • Execute SQL statements from R interface • Oracle Database Interface (DBI) for R • DBI –compliant Oracle driver based on OCI • Requirements – Oracle Instant Client or Oracle Database Client ©2014 Oracle – All Rights Reserved
  • 25. 26 Resources • Book: Using R to Unlock the Value of Big Data • Blog: https://blogs.oracle.com/R/ • Forum: https://forums.oracle.com/forums/forum.jspa?forumID=1397 • Oracle R Distribution • ROracle • Oracle R Enterprise • Oracle R Connector for Hadoop ©2014 Oracle – All Rights Reserved http://oracle.com/goto/R
  • 26. 27 ©2014 Oracle – All Rights Reserved
  • 27. 28