簡體   English   中英

將 Spark-SQL 文件保存為 csv

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM