मुझे लगता है कि जेडीबीसी का उपयोग कर दूरस्थ डेटाबेस से डेटा जोड़ने और पढ़ने की स्पार्क एसक्यूएल क्षमता का उपयोग करके यह संभव है।
एक विस्तृत आर & डी के बाद, मैं जेडीबीसी का उपयोग करके दो अलग-अलग हाइव वातावरण से कनेक्ट करने में सफलतापूर्वक सक्षम था और आगे की प्रक्रिया के लिए हाइव टेबल को स्पार्क में डेटाफ्रेम के रूप में लोड करने में सक्षम था।
पर्यावरण विवरण
Hadoop-2.6.0
अपाचे-छत्ता-2.0.0-बिन
चिंगारी 1.3.1-बिन-hadoop2.6
कोड नमूना हाइवमल्टी पर्यावरण।स्केला
import org.apache.spark.SparkConf
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkContext
object HiveMultiEnvironment {
def main(args: Array[String]) {
var conf = new SparkConf().setAppName("JDBC").setMaster("local")
var sc = new SparkContext(conf)
var sqlContext = new SQLContext(sc)
// load hive table (or) sub-query from Environment 1
val jdbcDF1 = sqlContext.load("jdbc", Map(
"url" -> "jdbc:hive2://<host1>:10000/<db>",
"dbtable" -> "<db.tablename or subquery>",
"driver" -> "org.apache.hive.jdbc.HiveDriver",
"user" -> "<username>",
"password" -> "<password>"))
jdbcDF1.foreach { println }
// load hive table (or) sub-query from Environment 2
val jdbcDF2 = sqlContext.load("jdbc", Map(
"url" -> "jdbc:hive2://<host2>:10000/<db>",
"dbtable" -> "<db.tablename> or <subquery>",
"driver" -> "org.apache.hive.jdbc.HiveDriver",
"user" -> "<username>",
"password" -> "<password>"))
jdbcDF2.foreach { println }
}
// todo: business logic
}
अन्य मापदंडों भी इस तरह के partitionColumn सेटिंग के रूप में SqlContext का उपयोग कर लोड होने के दौरान सेट किया जा सकता। ग्रहण से https://spark.apache.org/docs/1.3.0/sql-programming-guide.html
बिल्ड पथ: विवरण 'JDBC करने के लिए अन्य डेटाबेस' स्पार्क संदर्भ दस्तावेज़ में खंड के अंतर्गत खोजा
मैं क्या प्रयास नहीं किया है
उपयोग पर्यावरण के लिए HiveContext और पर्यावरण के लिए SqlContext 2
आशा है कि यह उपयोगी होगा।
सिर्फ एक कामकाज का विचार: एचआईवीएस डेटा पर हाइव डेटा रहता है, फिर भी आप एक फ़ाइल या डीआईआर पर डेटाफ्रेम बना सकते हैं? मेरा मतलब है, 'sc.wholeTextFiles (' hdfs: // host/usr/hive/गोदाम/mytable ')' आपको हाइव टेबल की सामग्री देगा। निश्चित रूप से, आप मेटा-डेटा का आराम खो देंगे, लेकिन यह काम कर सकता है। – mehmetminanc
मैंने खुद से एक ही सवाल पूछा है, बहुत कुछ खोजा है, और स्पार्क के कुछ कोड पढ़ा है - अब तक मुझे लगभग आश्वस्त है कि कम से कम एक ही स्पार्ककॉन्टेक्स्ट में नहीं है :( –
@ कार्तिक-मांचला मैंने सेटअप करने की कोशिश की स्पार्क-हाइव और इसे हॉर्टनवर्क्स सैंडबॉक्स चलाया लेकिन मुझे कुछ त्रुटियां मिल रही हैं, क्या आप इस में मेरी मदद कर सकते हैं। –