SlideShare a Scribd company logo
Page1
APACHE DRILL WITH ORACLE, HIVE AND HBASE
Prepared By: Nag Arvind Gudiseva
PROBLEM STATEMENT
Create a data pipelineby analysing data frommultipledata sources and persista JSON document.
ARCHITECTURAL SOLUTION
Use Apache Drill StoragePlugins to connect to RDBMS (MySQL, Oracle,etc.), NoSQL databases (MongoDB, Hive, HBase, etc.) and
text documents (JSON, CSV, etc.). Analysethe data in the tables (or dynamic schema on the fly for text documents) and leverage
Apache Drill API to combine data from different tables (or text documents) from different data sources on the fly. Apache Drill
exposes a REST WebService, which can be consumed usingJava Jersey REST Clientprogram. One can call thePOST method and
submitDrill Queries as a requestobject and receive the response in a JSON format, which can then be persisted on the Local File
System.
PICTORIAL ILLUSTRATION
Page2
INSTALLATION STEPS ON UBUNTU 14.04 VM
1. Download Apache Drill usingwget command
wget http://mirror.symnds.com/software/Apache/drill/drill-1.4.0/apache-drill-1.4.0.tar.gz
2. Untar and extract
tar -xvzf apache-drill-1.4.0.tar.gz
3. Move the folder to a preferred location
sudo mv apache-drill-1.4.0 /usr/local/apache-drill
4. Install Zookeeper:
a. Download the stableversion (zookeeper-3.4.6.tar.gz) from http://hadoop.apache.org/zookeeper/releases.html
b. Untar and move the folder to a preferred location
c. Rename zoo_sample.cfg as zoo.cfg
STARTING DRILL
a. EMBEDDED MODE (with SqlLine)
<DRILL_HOME>/bin/sqlline -u jdbc:drill:zk=local
(OR)
./bin/drill-embedded
b. DISTRIBUTED MODE (Start ZooKeeper and Drill Bit)
<ZOOKEEPER_HOME>/bin/zkServer.sh start
< ZOOKEEPER _HOME>/bin/zkServer.sh status
(AND)
<DRILL_HOME>/bin/drillbit.sh start
<DRILL_HOME>/bin/drillbit.sh status
STOPPING DRILL (AND ZOOKEEPER)
a. EMBEDDED MODE (with SqlLine)
0: jdbc:drill:zk=local>!quit
Page3
b. DISTRIBUTED MODE (Stop Drill Bitand ZooKeeper)
<DRILL_HOME>/bin/drillbit.sh stop
<DRILL_HOME>/bin/drillbit.sh status
(AND)
< ZOOKEEPER _HOME>/bin/zkServer.sh stop
< ZOOKEEPER _HOME>/bin/zkServer.sh status
JAR DEFAULT QUERIES
REFERENCE: <DRILL_HOME>/jars/3rdparty/foodmart-data-json-0.4.jar
0: jdbc:drill:zk=local>showdatabases;
0: jdbc:drill:zk=local>selectemployee_id, first_name,last_name,position_id,salary FROMcp.`employee.json` where salary >
30000;
0: jdbc:drill:zk=local>selectemployee_id, first_name,last_name,position_id,salary FROMcp.`employee.json` where salary >
30000 and position_id=2;
0: jdbc:drill:zk=local>selectemp.employee_id, emp.first_name,emp.salary,emp.department_id FROM cp.`employee.json` emp
where emp.salary <40000 and emp.salary>21000;
0: jdbc:drill:zk=local>selectemp.employee_id, emp.first_name,emp.salary,emp.department_id,dept.department_description
FROM cp.`employee.json` emp , cp.`department.json` dept where emp.salary <40000 and emp.salary>21000 and
emp.department_id = dept.department_id;
JSON SAMPLE QUERIES
SELECT * from dfs.`/home/gudiseva/arvind/zips.json` LIMIT10;
CSV SAMPLE QUERIES
select * FROM dfs.`/home/gudiseva/arvind/sample.csv`;
select columns[0] as id,columns[1] name, columns[2] as weight, columns[3] as height FROM
dfs.`/home/gudiseva/arvind/sample.csv`;
CREATING VIEW BY QUERYING MULTIPLE DATA SOURCES
CREATE or REPLACE view dfs.tmp.MULTI_VIEW as selectemp.employee_id, phy.columns[1] as Name
,dept.department_description,phy.columns[2] as Weight, phy.columns[3] as Height FROM cp.`employee.json` emp ,
cp.`department.json` dept, dfs.`/home/gudiseva/arvind/sample.csv` phy where CAST(emp.employee_id AS INT) =
CAST(phy.columns[0] AS INT) and emp.department_id = dept.department_id;
SELECT * FROM dfs.tmp.MULTI_VIEW;
Page4
OPTIMIZATION CONFIGURATIONS
<DRILL_HOME>/conf/drill-env.sh
DRILL_MAX_DIRECT_MEMORY="1G"
DRILL_HEAP="512M"
STORAGE PLUGINS
MYSQL
{
"type": "jdbc",
"driver": "com.mysql.jdbc.Driver",
"url": "jdbc:mysql://localhost",
"username": "root",
"password":"root",
"enabled": true
}
select * from mysql.userdb.`employee`;
ORACLE
{
"type": "jdbc",
"driver": "oracle.jdbc.OracleDriver",
"url": "jdbc:oracle:thin:MY_APPL/mayura_123@dbs-nprd2-vm-004.mayura.com:1523/N2S004I",
"username": "MY_APPL",
"password":"mayura_123",
"enabled": true
}
select * from oracle.MY_APPL.`emp`;
HIVE
{
"type": "hive",
"enabled": false,
"configProps":{
"hive.metastore.uris": "thrift://localhost:10000",
"javax.jdo.option.ConnectionURL": "jdbc:derby://localhost:1527/metastore_db;create=true",
"hive.metastore.warehouse.dir": "/user/hive/warehouse",
Page5
"fs.default.name": "file:///",
"hive.metastore.sasl.enabled": "false"
}
}
select * from hive.arvind.`employee`;
NOTE:
HIVE SERVER should be started
$ hive --servicehiveserver --verbose
[hive shell will not work when Hive Server is started]
MONGODB
{
"type": "mongo",
"connection": "mongodb://first_name:last_name@ds048537.mongolab.com:48537/m101",
"enabled": true
}
select `_id`, `value` from mongo.m101.`storm`;
HBASE
{
"type": "hbase",
"config": {
"hbase.zookeeper.quorum": "localhost",
"hbase.zookeeper.property.clientPort": "2181"
},
"size.calculator.enabled":false,
"enabled": true
}
SELECT CONVERT_FROM(row_key, 'UTF8') AS empid,
CONVERT_FROM(emp.personal_data.city, 'UTF8') AS city,
CONVERT_FROM(emp.personal_data.name, 'UTF8') AS name,
CONVERT_FROM(emp.professional_data.designation, 'UTF8') AS designation,
CONVERT_FROM(emp.professional_data.salary,'UTF8') AS salary
FROM hbase.`emp`;
Page6
RELOAD .BASHRC:
source~/.bashrc
(OR)
. ~/.bashrc
HBASE SAMPLE QUERIES
select * from hbase.`emp`;
SELECT CONVERT_FROM(row_key, 'UTF8') AS empid FROM hbase.`emp`;
SELECT CONVERT_FROM(row_key, 'UTF8') AS empid, CONVERT_FROM(emp.personal_data.city, 'UTF8') AS city FROM
hbase.`emp`;
SELECT CONVERT_FROM(emp.personal_data.city, 'UTF8') AS city, CONVERT_FROM(emp.personal_data.name, 'UTF8') As name
FROM hbase.`emp`;
SELECT CONVERT_FROM(row_key, 'UTF8') AS empid, CONVERT_FROM(emp.p ersonal_data.city, 'UTF8') AS city,
CONVERT_FROM(emp.personal_data.name, 'UTF8') As name, CONVERT_FROM(emp.professional_data.designation, 'UTF8') AS
designation,CONVERT_FROM(emp.professional_data.salary,'UTF8') As salary FROMhbase.`emp`;
ORACLE, HIVE AND HBASE (UNION ALL) QUERIES
select id,name, salary frommysql.userdb.`employee` union all selectid,first,salary fromoracle.MY_APPL.`emp`;
SELECT EID AS ID, NAME AS NAME, SALARY AS SALARY FROM hive.arvind.`employee` WHERE DESTINATION LIKE '%manager%'
UNION ALL
SELECT CONVERT_FROM(row_key, 'UTF8') AS ID, CONVERT_FROM(emp.personal_data.name, 'UTF8') AS NAME,
CONVERT_TO(emp.professional_data.salary,'UTF8') AS SALARY FROM hbase.`emp` WHERE
CONVERT_FROM(emp.professional_data.designation, 'UTF8') LIKE '%manager%';
SELECT EID AS ID, NAME AS NAME, TO_NUMBER(SALARY, '######') AS SALARY FROM hive.arvind.`employee` WHERE
DESTINATION LIKE '%manager%'
UNION ALL
SELECT ID AS ID, FIRST AS NAME, SALARY AS SALARY FROM oracle.MY_APPL.`emp`
UNION ALL
SELECT CONVERT_FROM(row_key, 'UTF8') AS ID, CONVERT_FROM(emp.personal_data.name, 'UTF8') AS NAME,
TO_NUMBER(emp.professional_data.salary,'######') AS SALARY FROM hbase.`emp` WHERE
CONVERT_FROM(emp.professional_data.designation, 'UTF8') LIKE '%manager%';
Page7
DRILL REST WEBSERVICE INTERFACE
1. Install RESTClientExtension in Firefox
2. On Firefox Browser, open the REST Client: chrome://restclient/content/restclient.html
3. Set the Request object:
Method: POST
URL: http://localhost:8047/query.json
Header: Content-Type: application/json
Body:
{
"queryType" : "SQL",
"query": "SELECT * from dfs.`/home/gudiseva/arvind/zips.json` LIMIT10"
}
4. Response object received:
Response Headers:
Status Code: 200 OK
Content-Length: 1377
Content-Type: application/json
Server: Jetty(9.1.5.v20140505)
Response Body:
{
"columns": [ "_id", "city", "loc", "pop", "state" ],
"rows" : [ {
"_id" : "01001",
"state" : "MA",
"loc" : "[-72.622739,42.070206]",
"pop" : "15338",
"city" : "AGAWAM"
}, {
"_id" : "01002",
"state" : "MA",
"loc" : "[-72.51565,42.377017]",
"pop" : "36963",
"city" : "CUSHMAN"
} ]
}
Page8
FIGURE ILLUSTRATION OF REST UI CLIENT
JAVA SAMPLE PROGRAMS
DRILL JDBC API (WITH DRILL JDBC DRIVER)
package nag.arvind.gudiseva;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DrillHiveOracleHBase {
public staticvoid main(String[]args) {
try {
Page9
Class.forName("org.apache.drill.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:drill:zk=localhost:2181","","");
Statementstmt =conn.createStatement();
String sql ="SELECTEID AS ID, NAMEAS NAME, TO_NUMBER(SALARY, '######') AS SALARY FROMhive.arvind.`employee`
WHERE DESTINATION LIKE'%manager%'"+
"UNION ALL "+
"SELECTID AS ID, FIRSTAS NAME, SALARY AS SALARY FROM
oracle.MY_APPL.`emp` "+
"UNION ALL "+
"SELECTCONVERT_FROM(row_key, 'UTF8') AS ID,
CONVERT_FROM(emp.personal_data.name, 'UTF8') AS NAME, TO_NUMBER(emp.professional_data.salary, '######') AS SALARY FROM hbase.`emp` WHERE
CONVERT_FROM(emp.professional_data.designation,'UTF8') LIKE'%manager%'";
ResultSet rs =stmt.executeQuery(sql);
System.out.println("ID"+"t"+ "NAME " +"t" + "SALARY ");
System.out.println("__"+"t" + "____ " + "t"+ "______ ");
System.out.println("--"+"t" + "---- " +"t" + "------ ");
while(rs.next()) {
String id =rs.getString("ID");
String name=rs.getString("NAME");
int salary =rs.getInt("SALARY");
System.out.println(id+"t"+name +"t"+salary);
}
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundExceptione) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
DRILL JDBC JARS:
drill-jdbc-all-1.4.0.jar
DRILL REST WEBSERVICE (WITH JERSEY REST CLIENT)
package web.service.rest;
import java.io.FileWriter;
import java.io.IOException;
Page10
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.WebResource.Builder;
public class JerseyClientPost{
public staticvoid main(String[]args) {
try {
Client client= Client.create();
WebResourcewebResource=client.resource("http://localhost:8047/query.json");
String input ="{"
+ ""queryType": "SQL""
+ ","
+ ""query": "SELECT* from dfs.`/home/gudiseva/arvind/zips.json` LIMIT10""
+ "}";
Builder builder =webResource.type("application/json");
ClientResponse response =builder.post(ClientResponse.class, input);
if(response.getStatus() !=200) {
throw new RuntimeException("Failed: HTTP error code: "+response.getStatus());
}
System.out.println("Outputfrom Server .... n");
String output=response.getEntity(String.class);
System.out.println(output);
try {
FileWriterfile=new FileWriter("/tmp/JSON/aix_input.json");
file.write(output);
file.flush();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Page11
}
JERSEY JARS DOWNLOAD:
https://sites.google.com/a/dineshonjava.com/dineshonjava/dineshonjava/RESTClient.zip?attredirects=0&d=1
jersey-bundle-1.14.jar
REFERENCES
http://ranafaisal.info/2015/05/13/install-apache-drill-on-ubuntu-14-04/
http://www.devinline.com/2015/11/apache-drill-setup-and-SQL-query-execution.html
http://www.devinline.com/2015/11/connect-jdbc-client-to-apache-drill.html

More Related Content

What's hot

Hive Anatomy
Hive AnatomyHive Anatomy
Hive Anatomy
nzhang
 
Analyzing Real-World Data with Apache Drill
Analyzing Real-World Data with Apache DrillAnalyzing Real-World Data with Apache Drill
Analyzing Real-World Data with Apache Drill
tshiran
 
Spark SQL versus Apache Drill: Different Tools with Different Rules
Spark SQL versus Apache Drill: Different Tools with Different RulesSpark SQL versus Apache Drill: Different Tools with Different Rules
Spark SQL versus Apache Drill: Different Tools with Different Rules
DataWorks Summit/Hadoop Summit
 
Apache drill
Apache drillApache drill
Apache drill
Jakub Pieprzyk
 
Hadoop and Spark for the SAS Developer
Hadoop and Spark for the SAS DeveloperHadoop and Spark for the SAS Developer
Hadoop and Spark for the SAS Developer
DataWorks Summit
 
An introduction to apache drill presentation
An introduction to apache drill presentationAn introduction to apache drill presentation
An introduction to apache drill presentationMapR Technologies
 
Drill into Drill – How Providing Flexibility and Performance is Possible
Drill into Drill – How Providing Flexibility and Performance is PossibleDrill into Drill – How Providing Flexibility and Performance is Possible
Drill into Drill – How Providing Flexibility and Performance is Possible
MapR Technologies
 
Understanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache DrillUnderstanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache DrillDataWorks Summit
 
Hadoop & HDFS for Beginners
Hadoop & HDFS for BeginnersHadoop & HDFS for Beginners
Hadoop & HDFS for Beginners
Rahul Jain
 
Introduction to Apache Drill
Introduction to Apache DrillIntroduction to Apache Drill
Introduction to Apache Drill
Swiss Big Data User Group
 
Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0
Scott Leberknight
 
Apache Drill
Apache DrillApache Drill
Big data, just an introduction to Hadoop and Scripting Languages
Big data, just an introduction to Hadoop and Scripting LanguagesBig data, just an introduction to Hadoop and Scripting Languages
Big data, just an introduction to Hadoop and Scripting Languages
Corley S.r.l.
 
6.hive
6.hive6.hive
Introduction to Apache HBase Training
Introduction to Apache HBase TrainingIntroduction to Apache HBase Training
Introduction to Apache HBase Training
Cloudera, Inc.
 
Rethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache DrillRethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache Drill
MapR Technologies
 
Introduction to Apache HBase, MapR Tables and Security
Introduction to Apache HBase, MapR Tables and SecurityIntroduction to Apache HBase, MapR Tables and Security
Introduction to Apache HBase, MapR Tables and Security
MapR Technologies
 
Apache Spark Introduction
Apache Spark IntroductionApache Spark Introduction
Apache Spark Introduction
sudhakara st
 
From docker to kubernetes: running Apache Hadoop in a cloud native way
From docker to kubernetes: running Apache Hadoop in a cloud native wayFrom docker to kubernetes: running Apache Hadoop in a cloud native way
From docker to kubernetes: running Apache Hadoop in a cloud native way
DataWorks Summit
 

What's hot (20)

Hive Anatomy
Hive AnatomyHive Anatomy
Hive Anatomy
 
Analyzing Real-World Data with Apache Drill
Analyzing Real-World Data with Apache DrillAnalyzing Real-World Data with Apache Drill
Analyzing Real-World Data with Apache Drill
 
Spark SQL versus Apache Drill: Different Tools with Different Rules
Spark SQL versus Apache Drill: Different Tools with Different RulesSpark SQL versus Apache Drill: Different Tools with Different Rules
Spark SQL versus Apache Drill: Different Tools with Different Rules
 
Apache drill
Apache drillApache drill
Apache drill
 
Hadoop and Spark for the SAS Developer
Hadoop and Spark for the SAS DeveloperHadoop and Spark for the SAS Developer
Hadoop and Spark for the SAS Developer
 
M7 and Apache Drill, Micheal Hausenblas
M7 and Apache Drill, Micheal HausenblasM7 and Apache Drill, Micheal Hausenblas
M7 and Apache Drill, Micheal Hausenblas
 
An introduction to apache drill presentation
An introduction to apache drill presentationAn introduction to apache drill presentation
An introduction to apache drill presentation
 
Drill into Drill – How Providing Flexibility and Performance is Possible
Drill into Drill – How Providing Flexibility and Performance is PossibleDrill into Drill – How Providing Flexibility and Performance is Possible
Drill into Drill – How Providing Flexibility and Performance is Possible
 
Understanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache DrillUnderstanding the Value and Architecture of Apache Drill
Understanding the Value and Architecture of Apache Drill
 
Hadoop & HDFS for Beginners
Hadoop & HDFS for BeginnersHadoop & HDFS for Beginners
Hadoop & HDFS for Beginners
 
Introduction to Apache Drill
Introduction to Apache DrillIntroduction to Apache Drill
Introduction to Apache Drill
 
Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0
 
Apache Drill
Apache DrillApache Drill
Apache Drill
 
Big data, just an introduction to Hadoop and Scripting Languages
Big data, just an introduction to Hadoop and Scripting LanguagesBig data, just an introduction to Hadoop and Scripting Languages
Big data, just an introduction to Hadoop and Scripting Languages
 
6.hive
6.hive6.hive
6.hive
 
Introduction to Apache HBase Training
Introduction to Apache HBase TrainingIntroduction to Apache HBase Training
Introduction to Apache HBase Training
 
Rethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache DrillRethinking SQL for Big Data with Apache Drill
Rethinking SQL for Big Data with Apache Drill
 
Introduction to Apache HBase, MapR Tables and Security
Introduction to Apache HBase, MapR Tables and SecurityIntroduction to Apache HBase, MapR Tables and Security
Introduction to Apache HBase, MapR Tables and Security
 
Apache Spark Introduction
Apache Spark IntroductionApache Spark Introduction
Apache Spark Introduction
 
From docker to kubernetes: running Apache Hadoop in a cloud native way
From docker to kubernetes: running Apache Hadoop in a cloud native wayFrom docker to kubernetes: running Apache Hadoop in a cloud native way
From docker to kubernetes: running Apache Hadoop in a cloud native way
 

Viewers also liked

Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
MapR Technologies Japan
 
Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアル
K Yamaguchi
 
Apache HBase for Architects
Apache HBase for ArchitectsApache HBase for Architects
Apache HBase for Architects
Nick Dimiduk
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
NTT DATA OSS Professional Services
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
hamaken
 
Integration of Hive and HBase
Integration of Hive and HBaseIntegration of Hive and HBase
Integration of Hive and HBase
Hortonworks
 
3.2 buterfly life cycle
3.2 buterfly life cycle3.2 buterfly life cycle
3.2 buterfly life cycle
Cecilia Barber
 
Decision Support Tool for Retrofitting a District Towards District as a Service
Decision Support Tool for Retrofitting a District Towards District as a ServiceDecision Support Tool for Retrofitting a District Towards District as a Service
Decision Support Tool for Retrofitting a District Towards District as a Service
FAST-Lab. Factory Automation Systems and Technologies Laboratory, Tampere University of Technology
 
Fracturas
FracturasFracturas
Berteater meningkatkan inteligensi ganda
Berteater meningkatkan inteligensi gandaBerteater meningkatkan inteligensi ganda
Berteater meningkatkan inteligensi gandaSolihin Utjok
 
Инна Лысенко. PR-Охота! Маркетинг мест
Инна Лысенко. PR-Охота! Маркетинг местИнна Лысенко. PR-Охота! Маркетинг мест
Инна Лысенко. PR-Охота! Маркетинг местprasu1995
 
Опрыскиватель бензиновый Champion PS226
Опрыскиватель бензиновый Champion PS226Опрыскиватель бензиновый Champion PS226
Опрыскиватель бензиновый Champion PS226
Al Maks
 
Benchmarking Briefing for LinkedIn
Benchmarking Briefing for LinkedInBenchmarking Briefing for LinkedIn
Benchmarking Briefing for LinkedInJohn Coulter MBA
 
Seattle bestpractices2010
Seattle bestpractices2010Seattle bestpractices2010
Seattle bestpractices2010
Olaseni Odebiyi
 
Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...
Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...
Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...
FAST-Lab. Factory Automation Systems and Technologies Laboratory, Tampere University of Technology
 
Kak cozdat blog
Kak cozdat blogKak cozdat blog
Kak cozdat blog
Viktoriya Donchik
 
Magma Investor Presentation Q2 FY12
Magma Investor Presentation Q2 FY12Magma Investor Presentation Q2 FY12
Magma Investor Presentation Q2 FY12AtulTibrewal
 
Газовый настенный котел Baxi Luna 3 310 Fi
Газовый настенный котел Baxi Luna 3 310 FiГазовый настенный котел Baxi Luna 3 310 Fi
Газовый настенный котел Baxi Luna 3 310 Fi
Al Maks
 

Viewers also liked (20)

Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
 
Apache Spark チュートリアル
Apache Spark チュートリアルApache Spark チュートリアル
Apache Spark チュートリアル
 
Apache HBase for Architects
Apache HBase for ArchitectsApache HBase for Architects
Apache HBase for Architects
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
 
Integration of Hive and HBase
Integration of Hive and HBaseIntegration of Hive and HBase
Integration of Hive and HBase
 
3.2 buterfly life cycle
3.2 buterfly life cycle3.2 buterfly life cycle
3.2 buterfly life cycle
 
Decision Support Tool for Retrofitting a District Towards District as a Service
Decision Support Tool for Retrofitting a District Towards District as a ServiceDecision Support Tool for Retrofitting a District Towards District as a Service
Decision Support Tool for Retrofitting a District Towards District as a Service
 
Fracturas
FracturasFracturas
Fracturas
 
Berteater meningkatkan inteligensi ganda
Berteater meningkatkan inteligensi gandaBerteater meningkatkan inteligensi ganda
Berteater meningkatkan inteligensi ganda
 
Test1
Test1Test1
Test1
 
Инна Лысенко. PR-Охота! Маркетинг мест
Инна Лысенко. PR-Охота! Маркетинг местИнна Лысенко. PR-Охота! Маркетинг мест
Инна Лысенко. PR-Охота! Маркетинг мест
 
Опрыскиватель бензиновый Champion PS226
Опрыскиватель бензиновый Champion PS226Опрыскиватель бензиновый Champion PS226
Опрыскиватель бензиновый Champion PS226
 
Jaringan Epitel
Jaringan EpitelJaringan Epitel
Jaringan Epitel
 
Benchmarking Briefing for LinkedIn
Benchmarking Briefing for LinkedInBenchmarking Briefing for LinkedIn
Benchmarking Briefing for LinkedIn
 
Seattle bestpractices2010
Seattle bestpractices2010Seattle bestpractices2010
Seattle bestpractices2010
 
Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...
Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...
Assessment of IEC-61499 and CDL for Function Block composition in factory-wid...
 
Kak cozdat blog
Kak cozdat blogKak cozdat blog
Kak cozdat blog
 
Magma Investor Presentation Q2 FY12
Magma Investor Presentation Q2 FY12Magma Investor Presentation Q2 FY12
Magma Investor Presentation Q2 FY12
 
Газовый настенный котел Baxi Luna 3 310 Fi
Газовый настенный котел Baxi Luna 3 310 FiГазовый настенный котел Baxi Luna 3 310 Fi
Газовый настенный котел Baxi Luna 3 310 Fi
 

Similar to Apache Drill with Oracle, Hive and HBase

Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - Introduction
ABC-GROEP.BE
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
Appweb Coders
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
Adrien Guéret
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On Rails
John Wilker
 
RESTful API In Node Js using Express
RESTful API In Node Js using Express RESTful API In Node Js using Express
RESTful API In Node Js using Express
Jeetendra singh
 
Enable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IAS
Enable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IASEnable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IAS
Enable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IAS
Invenire Aude
 
Build restful ap is with python and flask
Build restful ap is with python and flaskBuild restful ap is with python and flask
Build restful ap is with python and flask
Jeetendra singh
 
Going crazy with Node.JS and CakePHP
Going crazy with Node.JS and CakePHPGoing crazy with Node.JS and CakePHP
Going crazy with Node.JS and CakePHP
Mariano Iglesias
 
NodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdfNodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdf
ArthyR3
 
AWS Office Hours: Amazon Elastic MapReduce
AWS Office Hours: Amazon Elastic MapReduce AWS Office Hours: Amazon Elastic MapReduce
AWS Office Hours: Amazon Elastic MapReduce
Amazon Web Services
 
Local SQLite Database with Node for beginners
Local SQLite Database with Node for beginnersLocal SQLite Database with Node for beginners
Local SQLite Database with Node for beginners
Laurence Svekis ✔
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.js
FDConf
 
Using Sinatra to Build REST APIs in Ruby
Using Sinatra to Build REST APIs in RubyUsing Sinatra to Build REST APIs in Ruby
Using Sinatra to Build REST APIs in Ruby
LaunchAny
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
Igor Bronovskyy
 
Google apps script database abstraction exposed version
Google apps script database abstraction   exposed versionGoogle apps script database abstraction   exposed version
Google apps script database abstraction exposed versionBruce McPherson
 
Php basics
Php basicsPhp basics
Php basics
Egerton University
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
Visual Engineering
 
Using WordPress as your application stack
Using WordPress as your application stackUsing WordPress as your application stack
Using WordPress as your application stack
Paul Bearne
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive Boston
Michael Dawson
 

Similar to Apache Drill with Oracle, Hive and HBase (20)

Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - Introduction
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On Rails
 
RESTful API In Node Js using Express
RESTful API In Node Js using Express RESTful API In Node Js using Express
RESTful API In Node Js using Express
 
Enable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IAS
Enable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IASEnable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IAS
Enable Database Service over HTTP or IBM WebSphere MQ in 15_minutes with IAS
 
Build restful ap is with python and flask
Build restful ap is with python and flaskBuild restful ap is with python and flask
Build restful ap is with python and flask
 
harry presentation
harry presentationharry presentation
harry presentation
 
Going crazy with Node.JS and CakePHP
Going crazy with Node.JS and CakePHPGoing crazy with Node.JS and CakePHP
Going crazy with Node.JS and CakePHP
 
NodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdfNodeJS and ExpressJS.pdf
NodeJS and ExpressJS.pdf
 
AWS Office Hours: Amazon Elastic MapReduce
AWS Office Hours: Amazon Elastic MapReduce AWS Office Hours: Amazon Elastic MapReduce
AWS Office Hours: Amazon Elastic MapReduce
 
Local SQLite Database with Node for beginners
Local SQLite Database with Node for beginnersLocal SQLite Database with Node for beginners
Local SQLite Database with Node for beginners
 
Writing RESTful web services using Node.js
Writing RESTful web services using Node.jsWriting RESTful web services using Node.js
Writing RESTful web services using Node.js
 
Using Sinatra to Build REST APIs in Ruby
Using Sinatra to Build REST APIs in RubyUsing Sinatra to Build REST APIs in Ruby
Using Sinatra to Build REST APIs in Ruby
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Google apps script database abstraction exposed version
Google apps script database abstraction   exposed versionGoogle apps script database abstraction   exposed version
Google apps script database abstraction exposed version
 
Php basics
Php basicsPhp basics
Php basics
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
 
Using WordPress as your application stack
Using WordPress as your application stackUsing WordPress as your application stack
Using WordPress as your application stack
 
Micro app-framework - NodeLive Boston
Micro app-framework - NodeLive BostonMicro app-framework - NodeLive Boston
Micro app-framework - NodeLive Boston
 

More from Nag Arvind Gudiseva

Elasticsearch security
Elasticsearch securityElasticsearch security
Elasticsearch security
Nag Arvind Gudiseva
 
Elasticsearch Security Strategy
Elasticsearch Security StrategyElasticsearch Security Strategy
Elasticsearch Security Strategy
Nag Arvind Gudiseva
 
Git as version control for Analytics project
Git as version control for Analytics projectGit as version control for Analytics project
Git as version control for Analytics project
Nag Arvind Gudiseva
 
Exception Handling in Scala
Exception Handling in ScalaException Handling in Scala
Exception Handling in Scala
Nag Arvind Gudiseva
 
Hive performance optimizations
Hive performance optimizationsHive performance optimizations
Hive performance optimizations
Nag Arvind Gudiseva
 
Creating executable JAR from Eclipse IDE
Creating executable JAR from Eclipse IDECreating executable JAR from Eclipse IDE
Creating executable JAR from Eclipse IDE
Nag Arvind Gudiseva
 
Adding Idea IntelliJ projects to Subversion Version Control
Adding Idea IntelliJ projects to Subversion Version ControlAdding Idea IntelliJ projects to Subversion Version Control
Adding Idea IntelliJ projects to Subversion Version Control
Nag Arvind Gudiseva
 
ElasticSearch Hands On
ElasticSearch Hands OnElasticSearch Hands On
ElasticSearch Hands On
Nag Arvind Gudiseva
 
Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)
Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)
Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)
Nag Arvind Gudiseva
 
Order Review Solution Application (Version 2.0)
Order Review Solution Application (Version 2.0)Order Review Solution Application (Version 2.0)
Order Review Solution Application (Version 2.0)
Nag Arvind Gudiseva
 
MSC Temporary Passwords reset tool
MSC Temporary Passwords reset toolMSC Temporary Passwords reset tool
MSC Temporary Passwords reset tool
Nag Arvind Gudiseva
 
Store Support Operations - Training on MSC Application
Store Support Operations - Training on MSC ApplicationStore Support Operations - Training on MSC Application
Store Support Operations - Training on MSC Application
Nag Arvind Gudiseva
 
Store Support Operations - Training on MSC Application
Store Support Operations - Training on MSC ApplicationStore Support Operations - Training on MSC Application
Store Support Operations - Training on MSC Application
Nag Arvind Gudiseva
 

More from Nag Arvind Gudiseva (13)

Elasticsearch security
Elasticsearch securityElasticsearch security
Elasticsearch security
 
Elasticsearch Security Strategy
Elasticsearch Security StrategyElasticsearch Security Strategy
Elasticsearch Security Strategy
 
Git as version control for Analytics project
Git as version control for Analytics projectGit as version control for Analytics project
Git as version control for Analytics project
 
Exception Handling in Scala
Exception Handling in ScalaException Handling in Scala
Exception Handling in Scala
 
Hive performance optimizations
Hive performance optimizationsHive performance optimizations
Hive performance optimizations
 
Creating executable JAR from Eclipse IDE
Creating executable JAR from Eclipse IDECreating executable JAR from Eclipse IDE
Creating executable JAR from Eclipse IDE
 
Adding Idea IntelliJ projects to Subversion Version Control
Adding Idea IntelliJ projects to Subversion Version ControlAdding Idea IntelliJ projects to Subversion Version Control
Adding Idea IntelliJ projects to Subversion Version Control
 
ElasticSearch Hands On
ElasticSearch Hands OnElasticSearch Hands On
ElasticSearch Hands On
 
Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)
Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)
Hadoop 2.0 cluster setup on ubuntu 14.04 (64 bit)
 
Order Review Solution Application (Version 2.0)
Order Review Solution Application (Version 2.0)Order Review Solution Application (Version 2.0)
Order Review Solution Application (Version 2.0)
 
MSC Temporary Passwords reset tool
MSC Temporary Passwords reset toolMSC Temporary Passwords reset tool
MSC Temporary Passwords reset tool
 
Store Support Operations - Training on MSC Application
Store Support Operations - Training on MSC ApplicationStore Support Operations - Training on MSC Application
Store Support Operations - Training on MSC Application
 
Store Support Operations - Training on MSC Application
Store Support Operations - Training on MSC ApplicationStore Support Operations - Training on MSC Application
Store Support Operations - Training on MSC Application
 

Recently uploaded

一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
oz8q3jxlp
 
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
u86oixdj
 
Machine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptxMachine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptx
balafet
 
Nanandann Nilekani's ppt On India's .pdf
Nanandann Nilekani's ppt On India's .pdfNanandann Nilekani's ppt On India's .pdf
Nanandann Nilekani's ppt On India's .pdf
eddie19851
 
做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样
做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样
做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样
axoqas
 
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
slg6lamcq
 
Enhanced Enterprise Intelligence with your personal AI Data Copilot.pdf
Enhanced Enterprise Intelligence with your personal AI Data Copilot.pdfEnhanced Enterprise Intelligence with your personal AI Data Copilot.pdf
Enhanced Enterprise Intelligence with your personal AI Data Copilot.pdf
GetInData
 
Best best suvichar in gujarati english meaning of this sentence as Silk road ...
Best best suvichar in gujarati english meaning of this sentence as Silk road ...Best best suvichar in gujarati english meaning of this sentence as Silk road ...
Best best suvichar in gujarati english meaning of this sentence as Silk road ...
AbhimanyuSinha9
 
The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...
jerlynmaetalle
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
Timothy Spann
 
Adjusting OpenMP PageRank : SHORT REPORT / NOTES
Adjusting OpenMP PageRank : SHORT REPORT / NOTESAdjusting OpenMP PageRank : SHORT REPORT / NOTES
Adjusting OpenMP PageRank : SHORT REPORT / NOTES
Subhajit Sahu
 
Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...
Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...
Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...
Subhajit Sahu
 
Analysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performanceAnalysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performance
roli9797
 
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
v3tuleee
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
Timothy Spann
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP
 
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
slg6lamcq
 
The Building Blocks of QuestDB, a Time Series Database
The Building Blocks of QuestDB, a Time Series DatabaseThe Building Blocks of QuestDB, a Time Series Database
The Building Blocks of QuestDB, a Time Series Database
javier ramirez
 
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
axoqas
 
Adjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTESAdjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTES
Subhajit Sahu
 

Recently uploaded (20)

一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
 
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
 
Machine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptxMachine learning and optimization techniques for electrical drives.pptx
Machine learning and optimization techniques for electrical drives.pptx
 
Nanandann Nilekani's ppt On India's .pdf
Nanandann Nilekani's ppt On India's .pdfNanandann Nilekani's ppt On India's .pdf
Nanandann Nilekani's ppt On India's .pdf
 
做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样
做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样
做(mqu毕业证书)麦考瑞大学毕业证硕士文凭证书学费发票原版一模一样
 
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
 
Enhanced Enterprise Intelligence with your personal AI Data Copilot.pdf
Enhanced Enterprise Intelligence with your personal AI Data Copilot.pdfEnhanced Enterprise Intelligence with your personal AI Data Copilot.pdf
Enhanced Enterprise Intelligence with your personal AI Data Copilot.pdf
 
Best best suvichar in gujarati english meaning of this sentence as Silk road ...
Best best suvichar in gujarati english meaning of this sentence as Silk road ...Best best suvichar in gujarati english meaning of this sentence as Silk road ...
Best best suvichar in gujarati english meaning of this sentence as Silk road ...
 
The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
 
Adjusting OpenMP PageRank : SHORT REPORT / NOTES
Adjusting OpenMP PageRank : SHORT REPORT / NOTESAdjusting OpenMP PageRank : SHORT REPORT / NOTES
Adjusting OpenMP PageRank : SHORT REPORT / NOTES
 
Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...
Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...
Algorithmic optimizations for Dynamic Levelwise PageRank (from STICD) : SHORT...
 
Analysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performanceAnalysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performance
 
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
 
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
一比一原版(UniSA毕业证书)南澳大学毕业证如何办理
 
The Building Blocks of QuestDB, a Time Series Database
The Building Blocks of QuestDB, a Time Series DatabaseThe Building Blocks of QuestDB, a Time Series Database
The Building Blocks of QuestDB, a Time Series Database
 
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
 
Adjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTESAdjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTES
 

Apache Drill with Oracle, Hive and HBase

  • 1. Page1 APACHE DRILL WITH ORACLE, HIVE AND HBASE Prepared By: Nag Arvind Gudiseva PROBLEM STATEMENT Create a data pipelineby analysing data frommultipledata sources and persista JSON document. ARCHITECTURAL SOLUTION Use Apache Drill StoragePlugins to connect to RDBMS (MySQL, Oracle,etc.), NoSQL databases (MongoDB, Hive, HBase, etc.) and text documents (JSON, CSV, etc.). Analysethe data in the tables (or dynamic schema on the fly for text documents) and leverage Apache Drill API to combine data from different tables (or text documents) from different data sources on the fly. Apache Drill exposes a REST WebService, which can be consumed usingJava Jersey REST Clientprogram. One can call thePOST method and submitDrill Queries as a requestobject and receive the response in a JSON format, which can then be persisted on the Local File System. PICTORIAL ILLUSTRATION
  • 2. Page2 INSTALLATION STEPS ON UBUNTU 14.04 VM 1. Download Apache Drill usingwget command wget http://mirror.symnds.com/software/Apache/drill/drill-1.4.0/apache-drill-1.4.0.tar.gz 2. Untar and extract tar -xvzf apache-drill-1.4.0.tar.gz 3. Move the folder to a preferred location sudo mv apache-drill-1.4.0 /usr/local/apache-drill 4. Install Zookeeper: a. Download the stableversion (zookeeper-3.4.6.tar.gz) from http://hadoop.apache.org/zookeeper/releases.html b. Untar and move the folder to a preferred location c. Rename zoo_sample.cfg as zoo.cfg STARTING DRILL a. EMBEDDED MODE (with SqlLine) <DRILL_HOME>/bin/sqlline -u jdbc:drill:zk=local (OR) ./bin/drill-embedded b. DISTRIBUTED MODE (Start ZooKeeper and Drill Bit) <ZOOKEEPER_HOME>/bin/zkServer.sh start < ZOOKEEPER _HOME>/bin/zkServer.sh status (AND) <DRILL_HOME>/bin/drillbit.sh start <DRILL_HOME>/bin/drillbit.sh status STOPPING DRILL (AND ZOOKEEPER) a. EMBEDDED MODE (with SqlLine) 0: jdbc:drill:zk=local>!quit
  • 3. Page3 b. DISTRIBUTED MODE (Stop Drill Bitand ZooKeeper) <DRILL_HOME>/bin/drillbit.sh stop <DRILL_HOME>/bin/drillbit.sh status (AND) < ZOOKEEPER _HOME>/bin/zkServer.sh stop < ZOOKEEPER _HOME>/bin/zkServer.sh status JAR DEFAULT QUERIES REFERENCE: <DRILL_HOME>/jars/3rdparty/foodmart-data-json-0.4.jar 0: jdbc:drill:zk=local>showdatabases; 0: jdbc:drill:zk=local>selectemployee_id, first_name,last_name,position_id,salary FROMcp.`employee.json` where salary > 30000; 0: jdbc:drill:zk=local>selectemployee_id, first_name,last_name,position_id,salary FROMcp.`employee.json` where salary > 30000 and position_id=2; 0: jdbc:drill:zk=local>selectemp.employee_id, emp.first_name,emp.salary,emp.department_id FROM cp.`employee.json` emp where emp.salary <40000 and emp.salary>21000; 0: jdbc:drill:zk=local>selectemp.employee_id, emp.first_name,emp.salary,emp.department_id,dept.department_description FROM cp.`employee.json` emp , cp.`department.json` dept where emp.salary <40000 and emp.salary>21000 and emp.department_id = dept.department_id; JSON SAMPLE QUERIES SELECT * from dfs.`/home/gudiseva/arvind/zips.json` LIMIT10; CSV SAMPLE QUERIES select * FROM dfs.`/home/gudiseva/arvind/sample.csv`; select columns[0] as id,columns[1] name, columns[2] as weight, columns[3] as height FROM dfs.`/home/gudiseva/arvind/sample.csv`; CREATING VIEW BY QUERYING MULTIPLE DATA SOURCES CREATE or REPLACE view dfs.tmp.MULTI_VIEW as selectemp.employee_id, phy.columns[1] as Name ,dept.department_description,phy.columns[2] as Weight, phy.columns[3] as Height FROM cp.`employee.json` emp , cp.`department.json` dept, dfs.`/home/gudiseva/arvind/sample.csv` phy where CAST(emp.employee_id AS INT) = CAST(phy.columns[0] AS INT) and emp.department_id = dept.department_id; SELECT * FROM dfs.tmp.MULTI_VIEW;
  • 4. Page4 OPTIMIZATION CONFIGURATIONS <DRILL_HOME>/conf/drill-env.sh DRILL_MAX_DIRECT_MEMORY="1G" DRILL_HEAP="512M" STORAGE PLUGINS MYSQL { "type": "jdbc", "driver": "com.mysql.jdbc.Driver", "url": "jdbc:mysql://localhost", "username": "root", "password":"root", "enabled": true } select * from mysql.userdb.`employee`; ORACLE { "type": "jdbc", "driver": "oracle.jdbc.OracleDriver", "url": "jdbc:oracle:thin:MY_APPL/mayura_123@dbs-nprd2-vm-004.mayura.com:1523/N2S004I", "username": "MY_APPL", "password":"mayura_123", "enabled": true } select * from oracle.MY_APPL.`emp`; HIVE { "type": "hive", "enabled": false, "configProps":{ "hive.metastore.uris": "thrift://localhost:10000", "javax.jdo.option.ConnectionURL": "jdbc:derby://localhost:1527/metastore_db;create=true", "hive.metastore.warehouse.dir": "/user/hive/warehouse",
  • 5. Page5 "fs.default.name": "file:///", "hive.metastore.sasl.enabled": "false" } } select * from hive.arvind.`employee`; NOTE: HIVE SERVER should be started $ hive --servicehiveserver --verbose [hive shell will not work when Hive Server is started] MONGODB { "type": "mongo", "connection": "mongodb://first_name:last_name@ds048537.mongolab.com:48537/m101", "enabled": true } select `_id`, `value` from mongo.m101.`storm`; HBASE { "type": "hbase", "config": { "hbase.zookeeper.quorum": "localhost", "hbase.zookeeper.property.clientPort": "2181" }, "size.calculator.enabled":false, "enabled": true } SELECT CONVERT_FROM(row_key, 'UTF8') AS empid, CONVERT_FROM(emp.personal_data.city, 'UTF8') AS city, CONVERT_FROM(emp.personal_data.name, 'UTF8') AS name, CONVERT_FROM(emp.professional_data.designation, 'UTF8') AS designation, CONVERT_FROM(emp.professional_data.salary,'UTF8') AS salary FROM hbase.`emp`;
  • 6. Page6 RELOAD .BASHRC: source~/.bashrc (OR) . ~/.bashrc HBASE SAMPLE QUERIES select * from hbase.`emp`; SELECT CONVERT_FROM(row_key, 'UTF8') AS empid FROM hbase.`emp`; SELECT CONVERT_FROM(row_key, 'UTF8') AS empid, CONVERT_FROM(emp.personal_data.city, 'UTF8') AS city FROM hbase.`emp`; SELECT CONVERT_FROM(emp.personal_data.city, 'UTF8') AS city, CONVERT_FROM(emp.personal_data.name, 'UTF8') As name FROM hbase.`emp`; SELECT CONVERT_FROM(row_key, 'UTF8') AS empid, CONVERT_FROM(emp.p ersonal_data.city, 'UTF8') AS city, CONVERT_FROM(emp.personal_data.name, 'UTF8') As name, CONVERT_FROM(emp.professional_data.designation, 'UTF8') AS designation,CONVERT_FROM(emp.professional_data.salary,'UTF8') As salary FROMhbase.`emp`; ORACLE, HIVE AND HBASE (UNION ALL) QUERIES select id,name, salary frommysql.userdb.`employee` union all selectid,first,salary fromoracle.MY_APPL.`emp`; SELECT EID AS ID, NAME AS NAME, SALARY AS SALARY FROM hive.arvind.`employee` WHERE DESTINATION LIKE '%manager%' UNION ALL SELECT CONVERT_FROM(row_key, 'UTF8') AS ID, CONVERT_FROM(emp.personal_data.name, 'UTF8') AS NAME, CONVERT_TO(emp.professional_data.salary,'UTF8') AS SALARY FROM hbase.`emp` WHERE CONVERT_FROM(emp.professional_data.designation, 'UTF8') LIKE '%manager%'; SELECT EID AS ID, NAME AS NAME, TO_NUMBER(SALARY, '######') AS SALARY FROM hive.arvind.`employee` WHERE DESTINATION LIKE '%manager%' UNION ALL SELECT ID AS ID, FIRST AS NAME, SALARY AS SALARY FROM oracle.MY_APPL.`emp` UNION ALL SELECT CONVERT_FROM(row_key, 'UTF8') AS ID, CONVERT_FROM(emp.personal_data.name, 'UTF8') AS NAME, TO_NUMBER(emp.professional_data.salary,'######') AS SALARY FROM hbase.`emp` WHERE CONVERT_FROM(emp.professional_data.designation, 'UTF8') LIKE '%manager%';
  • 7. Page7 DRILL REST WEBSERVICE INTERFACE 1. Install RESTClientExtension in Firefox 2. On Firefox Browser, open the REST Client: chrome://restclient/content/restclient.html 3. Set the Request object: Method: POST URL: http://localhost:8047/query.json Header: Content-Type: application/json Body: { "queryType" : "SQL", "query": "SELECT * from dfs.`/home/gudiseva/arvind/zips.json` LIMIT10" } 4. Response object received: Response Headers: Status Code: 200 OK Content-Length: 1377 Content-Type: application/json Server: Jetty(9.1.5.v20140505) Response Body: { "columns": [ "_id", "city", "loc", "pop", "state" ], "rows" : [ { "_id" : "01001", "state" : "MA", "loc" : "[-72.622739,42.070206]", "pop" : "15338", "city" : "AGAWAM" }, { "_id" : "01002", "state" : "MA", "loc" : "[-72.51565,42.377017]", "pop" : "36963", "city" : "CUSHMAN" } ] }
  • 8. Page8 FIGURE ILLUSTRATION OF REST UI CLIENT JAVA SAMPLE PROGRAMS DRILL JDBC API (WITH DRILL JDBC DRIVER) package nag.arvind.gudiseva; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DrillHiveOracleHBase { public staticvoid main(String[]args) { try {
  • 9. Page9 Class.forName("org.apache.drill.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:drill:zk=localhost:2181","",""); Statementstmt =conn.createStatement(); String sql ="SELECTEID AS ID, NAMEAS NAME, TO_NUMBER(SALARY, '######') AS SALARY FROMhive.arvind.`employee` WHERE DESTINATION LIKE'%manager%'"+ "UNION ALL "+ "SELECTID AS ID, FIRSTAS NAME, SALARY AS SALARY FROM oracle.MY_APPL.`emp` "+ "UNION ALL "+ "SELECTCONVERT_FROM(row_key, 'UTF8') AS ID, CONVERT_FROM(emp.personal_data.name, 'UTF8') AS NAME, TO_NUMBER(emp.professional_data.salary, '######') AS SALARY FROM hbase.`emp` WHERE CONVERT_FROM(emp.professional_data.designation,'UTF8') LIKE'%manager%'"; ResultSet rs =stmt.executeQuery(sql); System.out.println("ID"+"t"+ "NAME " +"t" + "SALARY "); System.out.println("__"+"t" + "____ " + "t"+ "______ "); System.out.println("--"+"t" + "---- " +"t" + "------ "); while(rs.next()) { String id =rs.getString("ID"); String name=rs.getString("NAME"); int salary =rs.getInt("SALARY"); System.out.println(id+"t"+name +"t"+salary); } rs.close(); stmt.close(); conn.close(); } catch (ClassNotFoundExceptione) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } DRILL JDBC JARS: drill-jdbc-all-1.4.0.jar DRILL REST WEBSERVICE (WITH JERSEY REST CLIENT) package web.service.rest; import java.io.FileWriter; import java.io.IOException;
  • 10. Page10 import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.WebResource.Builder; public class JerseyClientPost{ public staticvoid main(String[]args) { try { Client client= Client.create(); WebResourcewebResource=client.resource("http://localhost:8047/query.json"); String input ="{" + ""queryType": "SQL"" + "," + ""query": "SELECT* from dfs.`/home/gudiseva/arvind/zips.json` LIMIT10"" + "}"; Builder builder =webResource.type("application/json"); ClientResponse response =builder.post(ClientResponse.class, input); if(response.getStatus() !=200) { throw new RuntimeException("Failed: HTTP error code: "+response.getStatus()); } System.out.println("Outputfrom Server .... n"); String output=response.getEntity(String.class); System.out.println(output); try { FileWriterfile=new FileWriter("/tmp/JSON/aix_input.json"); file.write(output); file.flush(); file.close(); } catch (IOException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } }