दिलचस्प पोस्ट
सिंटैक्स त्रुटि जब अजगर में कमांड लाइन का इस्तेमाल करते हैं जावा में कोई लगातार विशेषता क्यों नहीं है? मैं WPF में कस्टम रूट कमांड कैसे जोड़ूं? pdfbox का उपयोग कर पीडीएफ से छवियां निकालें जावा में एलबीएएल बनाम ईएएफपी? ग्राहक SOAP अनुरोध भेजने और प्रतिक्रिया प्राप्त करने के लिए एंड्रॉइड लिस्ट दृश्य सेटसैलेक्शन () काम करने के लिए नहीं लगता है आईआईएस में ब्राउज़र कैशिंग का लाभ उठाना (गूगल पेजपेड इश्यू) कैसे पहचानने के लिए कि एक स्ट्रिंग में यूनिकोड वर्ण हैं? फ़ॉन्ट तत्व के लिए समर्थन के साथ HTML5 कैनवास पर SVG बनाएं सशर्त डेटाग्रिड दृश्य स्वरूपण मैं एक ही डेटा पर दो बार पुनरावृत्त नहीं क्यों कर सकता हूं? क्या SQL सर्वर 2005 में फोन नंबरों को संचय करने के लिए डेटाटाइप का उपयोग किया जाना चाहिए? एक MySQL_connect () से PHP पीडीओ कनेक्शन प्राप्त करना? MKMapView या UIWebView ऑब्जेक्ट पर छूने वाले घटनाओं को कैसे रोकें?

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

इस के अनुसार

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

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

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

अधिक जानकारी

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 खंड शामिल होगा – लेकिन यह नहीं है

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

स्पार्क डेटाफ्रैम्स का समर्थन जेडीबीसी स्रोतों के साथ पुश-डाउन का समर्थन करता है, लेकिन शब्द का अर्थ एक सख्त एसक्यूएल अर्थ में प्रयोग किया जाता है। इसका अर्थ है कि यह केवल 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