दिलचस्प पोस्ट
Angular2 – त्रुटि अगर {{object.field}} मौजूद है, तो जांच नहीं है पता लगाएँ कि किस शाखा को एक स्थानीय शाखा ट्रैकिंग कर रही है आप एक ही मेज पर कैसे जुड़ें, दो बार, mysql में? Node.js के साथ सिंक्रोनस डेटाबेस क्वेरीज़ अमान्य कारक स्तर, एनए द्वारा उत्पन्न डॉक्यूमेंटबिल्ल्डर बनाओ। डीडीटी संदर्भों को अनदेखा करें जब valueChangeListener या f का उपयोग करें: अजाक्स श्रोता? जावा का उपयोग करने के लिए हेक्स को आरजीबी कैसे परिवर्तित करना है? जावा से सीधे जेएसपी निष्पादित करें इनहेरिट इंटरफेस जो एक विधि नाम साझा करते हैं जब मैं अपनी वेबसाइट को रीफ़्रेश करता हूं मुझे 404 मिलता है। यह अंगुलर 2 और फायरबेस के साथ है एक सरणी में CSV फ़ाइल पढ़ना और मूल्यों को संग्रहीत करना आप Node.js में एक HTTP पुनर्निर्देशन का पालन कैसे करते हैं? Tkinter प्रविष्टि क्यों कुछ भी नहीं लौटने समारोह मिल रहा है? WCF – संदेश आकार कोटा कैसे बढ़ाएं

क्या जेडीबीसी के साथ चिंगारी की पुशनिधि पुशडाइन काम करता है?

इस के अनुसार

उत्प्रेरक तार्किक ऑप्टिमाइज़ेशन जैसे कि पूर्वानुमानित पुशडाउन लागू होते हैं। ऑप्टिमाइज़र धक्का दे सकता है कि फिल्टर अप्रासंगिक डेटा को छोड़ने के लिए शारीरिक निष्पादन को सक्षम करने से, डेटा स्रोत में नीचे की भविष्यवाणी करता है।

स्पर्क डेटा स्रोत को भविष्य के नीचे धक्का का समर्थन करता है। क्या यह सुविधा भी जेडीबीसी के लिए उपलब्ध / अपेक्षित है?

(डीबी लॉग का निरीक्षण करने से मैं देख सकता हूं कि यह अभी-अभी कोई डिफ़ॉल्ट व्यवहार नहीं है- पूरी क्वेरी डीबी को पारित कर दी जाती है, भले ही यह बाद में स्पार्क फ़िल्टर द्वारा सीमित हो,

अधिक जानकारी

PostgreSQL 9.4 के साथ स्पार्क 1.5 चल रहा है

सांकेतिक टुकड़ा:

from pyspark import SQLContext, SparkContext, Row, SparkConf from data_access.data_access_db import REMOTE_CONNECTION sc = SparkContext() sqlContext = SQLContext(sc) url = 'jdbc:postgresql://{host}/{database}?user={user}&password={password}'.format(**REMOTE_CONNECTION) sql = "dummy" df = sqlContext.read.jdbc(url=url, table=sql) df = df.limit(1) df.show() 

एसक्यूएल ट्रेस:

 < 2015-09-15 07:11:37.718 EDT >LOG: execute <unnamed>: SET extra_float_digits = 3 < 2015-09-15 07:11:37.771 EDT >LOG: execute <unnamed>: SELECT * FROM dummy WHERE 1=0 < 2015-09-15 07:11:37.830 EDT >LOG: execute <unnamed>: SELECT c.oid, a.attnum, a.attname, c.relname, n.nspname, a.attnotnull OR (t.typtype = 'd' AND t.typnotnull), pg_catalog.pg_get_expr(d.adbin, da drelid) LIKE '%nextval(%' FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON (c.relnamespace = n.oid) JOIN pg_catalog.pg_attribute a ON (c.oid = a.attrelid) JOIN pg_catalog.pg_type t ON (aa tttypid = t.oid) LEFT JOIN pg_catalog.pg_attrdef d ON (d.adrelid = a.attrelid AND d.adnum = a.attnum) JOIN (SELECT 15218474 AS oid , 1 AS attnum UNION ALL SELECT 15218474, 3) vals ON (c.oid = vals.oid AND a.attnum = vals.attnum) < 2015-09-15 07:11:40.936 EDT >LOG: execute <unnamed>: SET extra_float_digits = 3 < 2015-09-15 07:11:40.964 EDT >LOG: execute <unnamed>: SELECT "id","name" FROM dummy 

मुझे उम्मीद है कि अंतिम चयन में एक limit 1 खंड शामिल होगा – लेकिन यह नहीं है

वेब के समाधान से एकत्रित समाधान "क्या जेडीबीसी के साथ चिंगारी की पुशनिधि पुशडाइन काम करता है?"

स्पार्क डेटाफ्रैम्स का समर्थन जेडीबीसी स्रोतों के साथ पुश-डाउन का समर्थन करता है, लेकिन शब्द का अर्थ एक सख्त एसक्यूएल अर्थ में प्रयोग किया जाता है। इसका अर्थ है कि यह केवल WHERE क्लाज को कवर करता है इसके अलावा ऐसा लगता है कि यह तार्किक संयोजन (केवल IN और OR मैं डर रहा हूँ) तक सीमित है और सरल पूर्वानुमान लगाता है।

स्पार्क पक्ष पर सीमा, मायने रखता है, आदेश देने, समूहों और शर्तों की तरह बाकी सब कुछ संसाधित होता है एक चेतावनी, पहले से ही SO पर आच्छादित है, यह है कि df.count() या sqlContext.sql("SELECT COUNT(*) FROM df") का SELECT 1 FROM df और स्पार्क का उपयोग करके पर्याप्त डेटा ट्रांसफर और प्रसंस्करण दोनों की आवश्यकता है।

इसका क्या मतलब है कि यह खो गया कारण है? बिल्कुल नहीं। table तर्क के रूप में एक मनमाने ढंग से subquery का उपयोग करना संभव है। यह एक predicate pushdown से कम सुविधाजनक है, लेकिन अन्यथा बहुत अच्छी तरह काम करता है:

 n = ... # Number of rows to take sql = "(SELECT * FROM dummy LIMIT {0}) AS tmp".format(int(n)) df = sqlContext.read.jdbc(url=url, table=sql) 

नोट :

डेटा स्रोत एपीआई v2 तैयार होने के बाद, यह व्यवहार भविष्य में सुधार किया जा सकता है:

  • चिंगारी से 15,689
  • SPIP: डेटा स्रोत एपीआई V2