Я пытаюсь сохранить вывод Spark SQL по пути, но не знаю, какую функцию использовать. Я хочу сделать это без использования искровых фреймов данных. Я пытался использовать write.mode ("overwrite") .csv ("file: /// home / user204943816622 / Task_3a-out") , но безуспешно. Может кто-нибудь сказать, как это сделать?
Примечание: spark SQL выдаст вывод в нескольких файлах. Необходимо обеспечить глобальную сортировку данных по всем файлам (частям). Таким образом, все слова в части 0 будут в алфавитном порядке перед словами в части 1.
case class Docword(docId: Int, vocabId: Int, count: Int)
case class VocabWord(vocabId: Int, word: String)
// Read the input data
val docwords = spark.read.
schema(Encoders.product[Docword].schema).
option("delimiter", " ").
csv("hdfs:///user/bdc_data/t3/docword.txt").
as[Docword]
val vocab = spark.read.
schema(Encoders.product[VocabWord].schema).
option("delimiter", " ").
csv("hdfs:///user/bdc_data/t3/vocab.txt").
as[VocabWord]
docwords.createOrReplaceTempView("docwords")
vocab.createOrReplaceTempView("vocab")
spark.sql("""SELECT vocab.word AS word1, SUM(count) count1 FROM
docwords INNER JOIN vocab
ON docwords.vocabId = vocab.vocabId
GROUP BY word
ORDER BY count1 DESC""").show(10)
write.mode("overwrite").csv("file:///home/user204943816622/Task_3a-out")
// Required to exit the spark-shell
sys.exit(0)