PostgreSQL सबसे उन्नत ओपनसोर्स डेटाबेस के रूप में जाना जाता है, और यह आपके डेटा को प्रबंधित करने में आपकी मदद करता है, चाहे डेटासेट कितना भी बड़ा, छोटा या अलग क्यों न हो, इसलिए आप इसका उपयोग अपने बड़े डेटा का प्रबंधन या विश्लेषण करने के लिए कर सकते हैं, और निश्चित रूप से, वहाँ हैं इसे संभव बनाने के कई तरीके, जैसे अपाचे स्पार्क। इस ब्लॉग में, हम देखेंगे कि Apache Spark क्या है और हम इसका उपयोग अपने PostgreSQL डेटाबेस के साथ कैसे काम कर सकते हैं।
बिग डेटा एनालिटिक्स के लिए, हमारे पास दो अलग-अलग प्रकार के एनालिटिक्स हैं:
- बैच विश्लेषण:समय की अवधि में एकत्र किए गए डेटा के आधार पर।
- रीयल-टाइम (स्ट्रीम) विश्लेषण:तत्काल परिणाम के लिए तत्काल डेटा पर आधारित।
अपाचे स्पार्क क्या है?
अपाचे स्पार्क बड़े पैमाने पर डेटा प्रोसेसिंग के लिए एक एकीकृत एनालिटिक्स इंजन है जो बैच और रीयल-टाइम एनालिटिक्स दोनों पर तेज और आसान तरीके से काम कर सकता है।
यह जावा, स्काला, पायथन और आर में उच्च-स्तरीय एपीआई और एक अनुकूलित इंजन प्रदान करता है जो सामान्य निष्पादन ग्राफ़ का समर्थन करता है।
अपाचे स्पार्क घटकअपाचे स्पार्क लाइब्रेरी
अपाचे स्पार्क में विभिन्न पुस्तकालय शामिल हैं:
- स्पार्क एसक्यूएल:यह एसक्यूएल या डेटाफ्रेम एपीआई का उपयोग करके संरचित डेटा के साथ काम करने के लिए एक मॉड्यूल है। यह हाइव, एवरो, लकड़ी की छत, ओआरसी, जेएसओएन और जेडीबीसी सहित विभिन्न डेटा स्रोतों तक पहुंचने का एक आम तरीका प्रदान करता है। आप इन स्रोतों के डेटा से भी जुड़ सकते हैं।
- स्पार्क स्ट्रीमिंग:प्रोसेसिंग स्ट्रीम करने के लिए भाषा-एकीकृत एपीआई का उपयोग करके स्केलेबल फॉल्ट-टॉलरेंट स्ट्रीमिंग एप्लिकेशन बनाना आसान बनाता है, जिससे आप उसी तरह से स्ट्रीमिंग जॉब लिख सकते हैं जैसे आप बैच जॉब लिखते हैं। यह जावा, स्काला और पायथन को सपोर्ट करता है। स्पार्क स्ट्रीमिंग आपकी ओर से बिना किसी अतिरिक्त कोड के, खोए हुए काम और ऑपरेटर स्थिति दोनों को बॉक्स से बाहर कर देती है। यह आपको बैच प्रोसेसिंग के लिए उसी कोड का पुन:उपयोग करने देता है, ऐतिहासिक डेटा के विरुद्ध स्ट्रीम में शामिल होता है, या स्ट्रीम स्थिति पर तदर्थ क्वेरी चलाने देता है।
- MLib (मशीन लर्निंग):यह एक स्केलेबल मशीन लर्निंग लाइब्रेरी है। MLlib में उच्च-गुणवत्ता वाले एल्गोरिदम शामिल हैं जो पुनरावृत्ति का लाभ उठाते हैं और MapReduce पर कभी-कभी उपयोग किए जाने वाले वन-पास सन्निकटन से बेहतर परिणाम प्राप्त कर सकते हैं।
- ग्राफएक्स:यह ग्राफ और ग्राफ-समानांतर गणना के लिए एक एपीआई है। ग्राफएक्स एक प्रणाली के भीतर ईटीएल, खोजपूर्ण विश्लेषण और पुनरावृत्त ग्राफ गणना को एकीकृत करता है। आप ग्राफ़ और संग्रह दोनों के समान डेटा देख सकते हैं, RDD के साथ ग्राफ़ को कुशलतापूर्वक रूपांतरित और जोड़ सकते हैं, और Pregel API का उपयोग करके कस्टम पुनरावृत्त ग्राफ़ एल्गोरिदम लिख सकते हैं।
अपाचे स्पार्क लाभ
आधिकारिक दस्तावेज के अनुसार, अपाचे स्पार्क के कुछ फायदे हैं:
- गति:कार्यभार को 100 गुना तेज चलाएं। अपाचे स्पार्क एक अत्याधुनिक डीएजी (डायरेक्ट एसाइक्लिक ग्राफ) शेड्यूलर, एक क्वेरी ऑप्टिमाइज़र और एक भौतिक निष्पादन इंजन का उपयोग करके बैच और स्ट्रीमिंग डेटा दोनों के लिए उच्च प्रदर्शन प्राप्त करता है।
- उपयोग में आसानी:जावा, स्काला, पायथन, आर और एसक्यूएल में जल्दी से एप्लिकेशन लिखें। स्पार्क 80 से अधिक उच्च-स्तरीय ऑपरेटरों की पेशकश करता है जो समानांतर ऐप बनाना आसान बनाते हैं। आप इसे स्काला, पायथन, आर, और एसक्यूएल शेल से अंतःक्रियात्मक रूप से उपयोग कर सकते हैं।
- सामान्यता:SQL, स्ट्रीमिंग और जटिल विश्लेषण को मिलाएं। स्पार्क एसक्यूएल और डेटाफ्रेम, मशीन लर्निंग के लिए एमएललिब, ग्राफएक्स और स्पार्क स्ट्रीमिंग सहित पुस्तकालयों के ढेर को शक्ति देता है। आप इन पुस्तकालयों को एक ही एप्लिकेशन में मूल रूप से जोड़ सकते हैं।
- हर जगह चलता है:स्पार्क Hadoop, Apache Mesos, Kubernetes, स्टैंडअलोन या क्लाउड पर चलता है। यह विविध डेटा स्रोतों तक पहुंच सकता है। आप स्पार्क को इसके स्टैंडअलोन क्लस्टर मोड का उपयोग करके, EC2, Hadoop YARN पर, मेसोस पर, या कुबेरनेट्स पर चला सकते हैं। HDFS, Alluxio, Apache Cassandra, Apache HBase, Apache Hive, और सैकड़ों अन्य डेटा स्रोतों में डेटा एक्सेस करें।
अब, देखते हैं कि हम इसे अपने PostgreSQL डेटाबेस के साथ कैसे एकीकृत कर सकते हैं।
PostgreSQL के साथ Apache Spark का उपयोग कैसे करें
हम मान लेंगे कि आपके पास अपना PostgreSQL क्लस्टर है और चल रहा है। इस कार्य के लिए, हम CentOS7 पर चलने वाले PostgreSQL 11 सर्वर का उपयोग करेंगे।
सबसे पहले, हमारे PostgreSQL सर्वर पर अपना परीक्षण डेटाबेस बनाते हैं:
postgres=# CREATE DATABASE testing;
CREATE DATABASE
postgres=# \c testing
You are now connected to database "testing" as user "postgres".
अब, हम t1 नामक एक टेबल बनाने जा रहे हैं:
testing=# CREATE TABLE t1 (id int, name text);
CREATE TABLE
और वहां कुछ डेटा डालें:
testing=# INSERT INTO t1 VALUES (1,'name1');
INSERT 0 1
testing=# INSERT INTO t1 VALUES (2,'name2');
INSERT 0 1
बनाए गए डेटा की जाँच करें:
testing=# SELECT * FROM t1;
id | name
----+-------
1 | name1
2 | name2
(2 rows)
Apache Spark को हमारे PostgreSQL डेटाबेस से जोड़ने के लिए, हम JDBC कनेक्टर का उपयोग करेंगे। आप इसे यहाँ से डाउनलोड कर सकते हैं।
$ wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
अब, अपाचे स्पार्क स्थापित करें। इसके लिए हमें यहां से स्पार्क पैकेज डाउनलोड करने होंगे।
$ wget http://us.mirrors.quenda.co/apache/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz
$ tar zxvf spark-2.4.3-bin-hadoop2.7.tgz
$ cd spark-2.4.3-bin-hadoop2.7/
स्पार्क शेल को चलाने के लिए हमें अपने सर्वर पर जावा स्थापित करना होगा:
$ yum install java
तो अब, हम अपना स्पार्क शेल चला सकते हैं:
$ ./bin/spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://ApacheSpark1:4040
Spark context available as 'sc' (master = local[*], app id = local-1563907528854).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.3
/_/
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_212)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
हम अपने सर्वर पर पोर्ट 4040 में उपलब्ध हमारे स्पार्क संदर्भ वेब यूआई तक पहुंच सकते हैं:
अपाचे स्पार्क यूआईस्पार्क शेल में, हमें PostgreSQL JDBC ड्राइवर जोड़ने की आवश्यकता है:
scala> :require /path/to/postgresql-42.2.6.jar
Added '/path/to/postgresql-42.2.6.jar' to classpath.
scala> import java.util.Properties
import java.util.Properties
और स्पार्क द्वारा उपयोग की जाने वाली JDBC जानकारी जोड़ें:
scala> val url = "jdbc:postgresql://localhost:5432/testing"
url: String = jdbc:postgresql://localhost:5432/testing
scala> val connectionProperties = new Properties()
connectionProperties: java.util.Properties = {}
scala> connectionProperties.setProperty("Driver", "org.postgresql.Driver")
res6: Object = null
अब, हम SQL क्वेरी निष्पादित कर सकते हैं। सबसे पहले, query1 को हमारी टेस्टिंग टेबल से SELECT * FROM t1 के रूप में परिभाषित करते हैं।
scala> val query1 = "(SELECT * FROM t1) as q1"
query1: String = (SELECT * FROM t1) as q1
और डेटाफ़्रेम बनाएं:
scala> val query1df = spark.read.jdbc(url, query1, connectionProperties)
query1df: org.apache.spark.sql.DataFrame = [id: int, name: string]
तो अब, हम इस DataFrame पर एक क्रिया कर सकते हैं:
scala> query1df.show()
+---+-----+
| id| name|
+---+-----+
| 1|name1|
| 2|name2|
+---+-----+
scala> query1df.explain
== Physical Plan ==
*(1) Scan JDBCRelation((SELECT * FROM t1) as q1) [numPartitions=1] [id#19,name#20] PushedFilters: [], ReadSchema: struct<id:int,name:string>
हम और मान जोड़ सकते हैं और इसे फिर से चला सकते हैं ताकि यह पुष्टि हो सके कि यह वर्तमान मान लौटा रहा है।
पोस्टग्रेएसक्यूएल
testing=# INSERT INTO t1 VALUES (10,'name10'), (11,'name11'), (12,'name12'), (13,'name13'), (14,'name14'), (15,'name15');
INSERT 0 6
testing=# SELECT * FROM t1;
id | name
----+--------
1 | name1
2 | name2
10 | name10
11 | name11
12 | name12
13 | name13
14 | name14
15 | name15
(8 rows)
स्पार्क
scala> query1df.show()
+---+------+
| id| name|
+---+------+
| 1| name1|
| 2| name2|
| 10|name10|
| 11|name11|
| 12|name12|
| 13|name13|
| 14|name14|
| 15|name15|
+---+------+
हमारे उदाहरण में, हम केवल यह दिखा रहे हैं कि अपाचे स्पार्क हमारे पोस्टग्रेएसक्यूएल डेटाबेस के साथ कैसे काम करता है, न कि यह कैसे हमारी बिग डेटा जानकारी का प्रबंधन करता है।
निष्कर्ष
आजकल, किसी कंपनी में बड़े डेटा को प्रबंधित करने की चुनौती होना बहुत आम है, और जैसा कि हम देख सकते हैं, हम इससे निपटने के लिए अपाचे स्पार्क का उपयोग कर सकते हैं और उन सभी सुविधाओं का उपयोग कर सकते हैं जिनका हमने पहले उल्लेख किया था। बड़ा डेटा एक विशाल दुनिया है, इसलिए आप अपाचे स्पार्क और पोस्टग्रेएसक्यूएल के उपयोग के बारे में अधिक जानकारी के लिए आधिकारिक दस्तावेज़ीकरण की जांच कर सकते हैं और इसे अपनी आवश्यकताओं के अनुसार फिट कर सकते हैं।