मैं मुख्य है कि चिंगारी संदर्भ बनाता है:स्पार्क एसक्यूएल Dataframe - आयात sqlContext.implicits._
val sc = new SparkContext(sparkConf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
फिर dataframe बनाता है और dataframe पर फिल्टर और सत्यापन करता है।
val convertToHourly = udf((time: String) => time.substring(0, time.indexOf(':')) + ":00:00")
val df = sqlContext.read.schema(struct).format("com.databricks.spark.csv").load(args(0))
// record length cannot be < 2
.na.drop(3)
// round to hours
.withColumn("time",convertToHourly($"time"))
यह बहुत अच्छा काम करता है।
लेकिन जब मैं
function ValidateAndTransform(df: DataFrame) : DataFrame = {...}
कि Dataframe & सत्यापन और परिवर्तनों करता है हो जाता है करने के लिए dataframe भेजकर एक और फाइल करने के लिए मेरी सत्यापन ले जाने का प्रयास: ऐसा लगता है जैसे मैं
import sqlContext.implicits._
की जरूरतTo avoid the error: “value $ is not a member of StringContext” that happens on line: .withColumn("time",convertToHourly($"time"))
लेकिन import sqlContext.implicits._
का उपयोग करने के लिए मुझे sqlContext
को भी नए में परिभाषित करने की आवश्यकता है इसलिए जैसे फाइल:
val sc = new SparkContext(sparkConf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
या
function ValidateAndTransform(df: DataFrame) : DataFrame = {...}
function
मैं जुदाई मैं 2 फ़ाइलें (मुख्य & सत्यापन) के लिए क्या करने की कोशिश कर रहा हूँ की तरह महसूस के लिए भेज सही ढंग से किया नहीं है ...
इसे कैसे डिजाइन किया जाए इस पर कोई विचार है? या बस समारोह में sqlContext भेजें?
धन्यवाद!
में इस उदाहरण पर एक नज़र डालें जब मैं की तरह है कि मैं सिर्फ नए वर्ग के निर्माता में SQLContext पारित चीजों को अलग करना चाहते हैं और फिर मैं प्रत्येक वर्ग के प्रति एक बार sqlContext.implicits._ आयात कर सकते हैं। मैं कुछ भी बेहतर नहीं कर सका इसलिए मैं इस सवाल को वोट देता हूं और बेहतर परेशानियों की प्रतीक्षा करता हूं। – Niemand