[英]Spark-SQL : How to read a TSV or CSV file into dataframe and apply a custom schema?
[英]Saving a Spark-SQL file as csv
我正在嘗試將 SparkSQL 的 output 保存到路徑但不確定要使用什么 function。 我想在不使用 spark 數據幀的情況下執行此操作。 我正在嘗試使用write.mode("overwrite").csv("file:///home/user204943816622/Task_3a-out")但沒有成功。 有人能告訴我怎么做嗎?
注意:spark SQL 會在多個文件中給出 output。 需要確保數據在所有文件(部分)中全局排序。 因此,第 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)
.show()
返回void
你應該 dp 如下所示
val writeDf = 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""")
writeDf.write.mode("overwrite").csv("file:///home/user204943816622/Task_3a-out")
writeDf.show() // this should not be used in prod environment
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.