2016-08-09 35 views
0

Ich lief über eine in R geschriebene Datenbankabfrage, die mit dem Apache Drill-Treiber gegen einen mapR-Datenspeicher ausgeführt wird. Aufgrund einer Performance-Obergrenze mit meinem Programm von etwa 700.000 Zeilen, bin ich dabei, eine andere DB-Situation als SQL zu verwenden.wird MapR/Apache Drill SQL-Abfrage Arbeit auf jeden Knoten verteilen oder ist es die gleiche Geschwindigkeit wie SQL RDBMS?

In dieser Frage geht es darum, mit R SQL abzufragen und in der Arbeitsumgebung zu speichern. Ich habe es verallgemeinert, um SELECT * FROM ... für diese Frage zu sagen.

Angenommen, Sie führen einen MapR-Cluster mit drei Knoten aus und führen eine SQL-Abfrage für die Datenbank mit R aus. Gibt die Abfrage Ergebnisse schneller zurück, weil MapR verwendet wird oder ein einzelnes RDBMS dasselbe leistet?

library(RODBC) 

# initialize the connection 
ch <- odbcConnect("drill64") 

# run the query 
df = sqlQuery(SELECT * FROM state) 

#Code to write output to file 

# close the connection so we don't get a warning at the end 
odbcClose(ch) 

Performance weise, dies ist das gleiche wie odbcConnect("RMySQL") oder eine ähnliche MySQL-Bibliothek?

Antwort

2

Die Antwort hängt davon ab, was die zugrunde liegenden Daten sind. Drill ist eine verteilte Abfrage-Engine, die in einem großen Cluster ausgeführt werden kann. Für große Datenmengen sind dies Vorteile. Bei sehr kleinen Datenmengen wird es nicht viel helfen, eine große verteilte Abfrage-Engine zu haben. Denken Sie auch daran, dass Drill mit verschiedenen Datenquellen umgehen kann, die Ihrem Programm viel mehr Flexibilität geben können, bis die Anwendungsfälle erreicht sind.

Wenn jedoch die Daten bereits in Mysql sind und Sie das Drill JDBC-Plugin für mysql verwenden möchten, ist es wahrscheinlich nicht vorteilhaft, Drill zu verwenden.