नीचे मेरी स्पार्क एसक्यूएल स्क्रिप्ट है जो फ़ाइल लोड करती है और इसके ऊपर एसक्यूएल का उपयोग करती है, मैं एसक्यूएल क्वेरी से आउटपुट एकत्र करना चाहता हूं और इसे एक फाइल में लिखना चाहता हूं, यह सुनिश्चित नहीं कर सकता कि कोई भी मदद कैसे कर सकता है।एक फ़ाइल में स्पार्क एसक्यूएल आउटपुट कैसे एकत्रित करें?
//import classes for sql
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
// createSchemaRDD is used to implicitly convert an RDD to a SchemaRDD.
import sqlContext.createSchemaRDD
//hdfs paths
val warehouse="hdfs://quickstart.cloudera/user/hive/warehouse/"
val customers_path=warehouse+"people/people.txt"
customers_path
//create rdd file called file
val file=sc.textFile(customers_path)
val schemaString="name age"
import org.apache.spark.sql._
val schema =
StructType(
schemaString.split(",").map(fieldName => StructField(fieldName, StringType, true)))
val rowRDD=file.map(_.split(",")).map(p => Row(p(0),p(1).trim))
val peopleSchemRDD=sqlContext.applySchema(rowRDD, schema)
// Register the SchemaRDD as a table.
peopleSchemRDD.registerTempTable("people")
// SQL statements can be run by using the sql methods provided by sqlContext.
sqlContext.sql("select count(*) from people").collect().foreach(println)
System.exit(0)
कोड में आपने परिणाम दिया है क्वेरी सिर्फ एक संख्या है, है ना? आप पूछ रहे हैं कि स्कैला में एक फाइल को कैसे लिखना है? –
हाँ, मैं चाहता हूं कि फ़ाइल में नंबर या आउटपुट लिखा जाए, क्या ऐसा करने का कोई तरीका है? –
val op = sqlContext.sql ("लोगों से गिनती (*) का चयन करें") वैल सी = op.collect() वैल rdd = sc.parallelize (सी) rdd.saveAsTextFile ("/ home/cloudera/op") System.exit (0) –